2012-11-16 16 views
6

ARMro için aşağıdaki komutları kullanarak derlenmiş Valgrind'i (http://valgrind.org/downloads/valgrind-3.8.1.tar.bz2) çapraz çiziyorum (Ben Buildroot kullanıyorum) benim Ubuntu 10.04 ana bilgisayarda:ARMro ile ARMgr için Valgrind Buildroot ile libc6-dbg gerektiren

export PATH=$PATH:/home/user/toolchain/linaro/bin 
CC=arm-linux-gnueabi-gcc CFLAGS=-I/home/user/toolchain/linaro/arm-linux-gnueabi/libc/usr/include LDFLAGS=-L/home/user/toolchain/linaro/arm-linux-gnueabi/libc/usr/lib ./configure --prefix=/opt/valgrind --host=armv7-none-linux-gnueabi --target=arm-none-linux-gnueabi --build=i386-ubuntu-linux 
make 
sudo make install 

benim ARM hedef kuruluna ikilileri kopyaladığınızda, aşağıdaki hatayı alıyorum:

==413== Memcheck, a memory error detector 
==413== Copyright (C) 2002-2012, and GNU GPL'd, by Julian Seward et al. 
==413== Using Valgrind-3.8.1 and LibVEX; rerun with -h for copyright info 
==413== Command: /home/user/testApp 
==413== 

valgrind: Fatal error at startup: a function redirection 
valgrind: which is mandatory for this platform-tool combination 
valgrind: cannot be set up. Details of the redirection are: 
valgrind: 
valgrind: A must-be-redirected function 
valgrind: whose name matches the pattern:  memcpy 
valgrind: in an object with soname matching: ld-linux.so.3 
valgrind: was not found whilst processing 
valgrind: symbols from the object with soname: ld-linux.so.3 
valgrind: 
valgrind: Possible fixes: (1, short term): install glibc's debuginfo 
valgrind: package on this machine. (2, longer term): ask the packagers 
valgrind: for your Linux distribution to please in future ship a non- 
valgrind: stripped ld.so (or whatever the dynamic linker .so is called) 
valgrind: that exports the above-named function using the standard 
valgrind: calling conventions for this platform. The package you need 
valgrind: to install for fix (1) is called 
valgrind: 
valgrind: On Debian, Ubuntu:     libc6-dbg 
valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo 
valgrind: 
valgrind: Cannot continue -- exiting now. Sorry. 

benim Linaro Toolchain Versiyon geçerli:

gcc version 4.7.1 20120402 (prerelease) (crosstool-NG linaro-1.13.1-2012.04-20120426 - Linaro GCC 2012.04) 

Google'da arama yaptım, ancak buna bir çözüm bulamıyorum. Valgrind'i hedef tahtada çalışmak için nasıl alabilirim? Sistemimi kurmak için Buildroot kullanıyorum ama libc6-dbg yapı sisteminde bulabileceğim bir paket değil. Toolchain sysroot'tan kopyalamak için ihtiyacım olan bazı dizin veya dosyalar var mı? Teşekkür -

Ben Valgrind çalıştırmak için kullanıyorum komut burada gösterilir:

# which valgrind 
/usr/bin/valgrind 
# valgrind /home/user/MyQtApp 
==216== Memcheck, a memory error detector 
... 
... 
+0

belirtebilir misiniz? Teşekkürler. –

+0

Thomas, Komutlarımı yukarıdaki gönderiye ekledim - Teşekkürler. – PhilBot

+0

Merhaba Thomas, bunu yeniden üretebildin mi? Bu sorunu hala Buildroot Valgrind yüklememle görüyorum. Teşekkürler! – PhilBot

cevap

1

Aynı sorunla karşılaştım ve bir çözüm buldum. Bu nedenle, birisinin de bununla yüz yüze gelmesi durumunda, işte böyle bir şey oldu: Valgrind'in uygulamayı hata ayıklayamamasının nedeni, C kitaplıklarındaki eksik sembollerdir. Dış takım zinciri (Linaro) ile yapı köprüsü oluştururken, soymasız C kütüphanelerini Linaro ağacında bulabiliriz. Arm-linux-gnueabihf \ libc \ lib \ arm-linux-gnueabihf klasöründe , soyulmamış kitaplıkları bulacaksınız. Sadece soyulmamış dosyaları hedefinize kopyalayın .. İşte bu. Umut, bu başkalarına yardımcı olacaktır. Eğer biz sorunu yeniden oluşturmaya çalışın böylece, hedef üzerinde Valgrind çalıştırmak için kullanın komutu hangi

+0

Soyulmamış dosyaları hedefe nasıl kopyaladınız? Onları kopyaladığımda işletim sistemini bozar. Yoksa bunları ayrı bir yere kopyalayıp LD_LIBRARY_PATH değiştiriyor musunuz? – Fred

0

Sana kendim kullanmadım paketin bir bağlantı veren ama işe yarayacak umut ediyorum Maalesef:

https://launchpad.net/ubuntu-leb/oneiric/armel/libc6-dbg

+0

Öneriniz için teşekkürler - .deb'yi indirdim ve içeriklerini hedef panondaki/lib dizinine çıkardım. Ancak, kurulum şimdi açılmıyor. TeraTerm'i ve çekirdek çizmelerini izlerim ancak çekirdeği yükledikten sonra askıda kalıyor. Burada bir çeşit uyumsuzluk olmalı. – PhilBot

+1

sadece paketi çıkarmak için yeterli olduğundan emin misiniz? Gerekli kurulumları gerçekleştiren bazı kurulum betikleri olabilir, vb ... –

5

Libc'nizi oluşturmak için Buildroot veya OpenEmbedded kullanıyorsunuz? o OE sonra yerel depoda mevcut libc6-dbg pakete sahip olmalıdır ise

(TMPDIR// İPK dağıtmak). Veya "dbg-pkgs" i IMAGE_FEATURES içine ekleyin ve resminizi yeniden oluşturun. Eğer OpenEmbedded eski sürümünü kullanıyorsunuz

Glibc 2.12 gösterilmektedir. Ama bu bile size libc6-dbg paketi vermelidir. asla kullanılmış gibi

Buildroot yardımcı olamaz.

+0

Cevabınız için teşekkürler - Aslında Buildroot'u kullanıyorum ve bunu açıklamak için sorumu düzenledim. Umarım cevabınız başkalarına bu konuda yardımcı olur. – PhilBot

1

Sen hedef unstripped Librairies gerekir.

Bunu yapmanın 2 yolu. senin buildroot config

: BR2_STRIP_none = Sadece librairie klasörüne unstrip çok büyük bir hedef imajını

2- yapacak y :

1- Bir unstripped sistem yapmak. BR2_STRIP_EXCLUDE_DIRS = "lib"

+0

Harici bir takım zinciri (Linaro) kullanıyorum ve eğer ld - * 'yi değiştirmeye çalışırsam, yeniden başlatırken çekirdek panik oluyorum. Buildroot benim toolchain'imi oluşturmuyor, bu yüzden bu yöntemi kullanarak unstripped olan boot/lib binary'leri önyükleme yapamıyorum. – PhilBot

İlgili konular