2012-11-16 8 views
6
साथ libc6-DBG आवश्यकता होती

मैं Linaro Toolchain साथ निम्न कमांड का प्रयोग एआरएम के लिए वेलग्रिंड (http://valgrind.org/downloads/valgrind-3.8.1.tar.bz2) संकलित क्रॉस मेरी उबंटू 10.04 मेजबान (मैं Buildroot उपयोग कर रहा हूँ) पर:वेलग्रिंड Linaro Toolchain साथ एआरएम के लिए Buildroot

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 

जब मैं अपने एआरएम लक्ष्य बोर्ड को बाइनरी नकल, मैं निम्नलिखित त्रुटि मिलती है:

==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. 

मेरे Linaro Toolchain संस्करण है:

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

मैंने Google पर चारों ओर खोज की है लेकिन इसका समाधान नहीं मिल रहा है। मैं अपने लक्षित बोर्ड पर काम करने के लिए वालग्रिंड कैसे प्राप्त कर सकता हूं? मैं अपने सिस्टम को बनाने के लिए बिल्ड्रूट का उपयोग करता हूं लेकिन libc6-dbg एक पैकेज नहीं है जिसे मैं बिल्ड सिस्टम में पा सकता हूं। क्या टूलचैन सिसरूट से कॉपी करने के लिए मुझे कुछ निर्देशिका या फाइलें हैं? धन्यवाद -

आदेश मैं वेलग्रिंड को चलाने के लिए उपयोग कर रहा हूँ यहाँ दिखाया गया है:

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

क्या आप निर्दिष्ट कर सकते हैं कि आप लक्ष्य पर वालग्रिंड चलाने के लिए किस आदेश का उपयोग करते हैं, ताकि हम समस्या को पुन: पेश करने का प्रयास कर सकें? धन्यवाद। –

+0

थॉमस, मैंने उपरोक्त पद पर मेरे आदेशों को जोड़ दिया है - धन्यवाद। – PhilBot

+0

हाय थॉमस, क्या आप इसे पुन: पेश करने में सक्षम थे? मैं अभी भी अपने बिड्रूट वाल्ग्रिंड इंस्टॉल के साथ इस मुद्दे को देख रहा हूं। धन्यवाद! – PhilBot

उत्तर

1

मुझे एक ही समस्या का सामना करना पड़ रहा है, और एक समाधान मिला। इस प्रकार किसी को भी इसका सामना करना पड़ता है, यहां बताया गया है कि मैंने चीजें कैसे कीं: कारण वालग्रिंड एप्लिकेशन को डीबग नहीं कर सकता है सी पुस्तकालयों में गायब प्रतीक हैं। बाहरी टूलचेन (लिनारो) के साथ बिल्ड्रूट का निर्माण करते समय, हम लिनारो पेड़ में गैर छिद्रित सी पुस्तकालयों को पा सकते हैं। बांह-लिनक्स-gnueabihf \ libc \ lib \ arm-linux-gnueabihf फ़ोल्डर में, आपको गैर छीनने वाले पुस्तकालय मिलेंगे। बस अपने लक्ष्य पर गैर छीन वाली फ़ाइलों की प्रतिलिपि बनाएँ .. यही वह है। आशा है कि इससे दूसरों की मदद मिलेगी।

+0

आपने गैर-छीन वाली फ़ाइलों को लक्ष्य में कैसे कॉपी किया? जब मैं उन्हें कॉपी करता हूं तो ओएस तोड़ देता है। या आप उन्हें एक अलग स्थान पर कॉपी कर रहे हैं और LD_LIBRARY_PATH बदल रहे हैं? – Fred

0

माफ करना, मैं आप पैकेज मैं अपने आप को द्वारा उपयोग नहीं किया के लिए एक लिंक दे रहा हूँ, लेकिन आशा है कि यह काम करने वाला बताया गया है:

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

+0

सुझाव के लिए धन्यवाद - मैंने .deb डाउनलोड किया है और लक्ष्य सामग्री पर मेरी/lib निर्देशिका में इसकी सामग्री निकाली है। हालांकि, मेरा बोर्ड अब बूट नहीं होगा। मैं टेराटर्म और कर्नेल बूट देखता हूं लेकिन यह कर्नेल लोड करने के बाद बस लटकता है। यहां कुछ प्रकार की असंगतता होनी चाहिए। – PhilBot

+1

क्या आप वाकई पैकेज निकालने के लिए पर्याप्त हैं? कुछ इंस्टॉलेशन स्क्रिप्ट हो सकती हैं जो कुछ आवश्यक सेट-अप, आदि ... –

5

तो क्या आप अपने Libc बनाने के लिए Buildroot या OpenEmbedded का उपयोग कर रहे हैं?

यदि यह ओई है तो आपके पास स्थानीय भंडार (टीएमपीडीआईआर/तैनाती/आईपीके) में libc6-dbg पैकेज उपलब्ध होना चाहिए। या IMAGE_FEATURES में "dbg-pkgs" जोड़ें और अपनी छवि का पुनर्निर्माण करें।

ग्लिब 2.12 दिखाता है कि आप OpenEmbedded के पुराने संस्करण का उपयोग कर रहे हैं। लेकिन यहां तक ​​कि आपको libc6-dbg पैकेज देना चाहिए।

बिल्ड्रूट के साथ कभी भी इसका उपयोग नहीं किया जा सकता है।

+0

उत्तर के लिए धन्यवाद - मैं वास्तव में बिल्ड्रोट का उपयोग कर रहा हूं और यह स्पष्ट करने के लिए मेरे प्रश्न को संपादित कर रहा हूं। उम्मीद है कि आपका जवाब इस मुद्दे के साथ दूसरों की मदद करेगा। – PhilBot

1

आपको अपने लक्ष्य में librairies unstripped की जरूरत है।

इसे करने के 2 तरीके।

अपने buildroot config में

: BR2_STRIP_none = y यह केवल Librairie फ़ोल्डर unstrip एक बहुत बड़ा लक्ष्य छवि

2- कर देगा:

1- एक unstripped प्रणाली बनाते हैं। BR2_STRIP_EXCLUDE_DIRS = "lib"

+0

मैं एक बाहरी टूलचेन (लिनारो) का उपयोग कर रहा हूं और यदि मैं एलडी - * को स्विच करने का प्रयास करता हूं तो मेरे बोर्ड पर मुझे रिबूट करते समय कर्नेल पैनिक मिलता है। Buildroot मेरे टूलचेन का निर्माण नहीं कर रहा है, इसलिए मैं इस विधि का उपयोग करके संगत/lib binaries को बूट करने के लिए तैयार नहीं कर सकता। – PhilBot

संबंधित मुद्दे