में मेरे पास एक उबंटू बॉक्स में पूरी तरह से काम कर रहा है ELDK-3.1 स्थापित है।ईएलडीके जीसीसी लिंकर त्रुटि ld.so.1
एक और मशीन में, 64 बिट्स ओपनस्यूज 12.1 चलाते हुए, मैंने ईएलडीके स्थापना को क्लोन किया और कुछ समय के लिए यह बहुत अच्छी तरह से काम किया।
अब जब मैं अपनी परियोजनाओं को कॉन्फ़िगर करने की कोशिश मैं देख रहा हूँ:
configure: error: C compiler cannot create executables
See `config.log' for more details
और लॉग दिखाता है:
configure:3411: ppc-linux-gcc conftest.c >&5
/opt/ELDK-3.1/usr/bin/../lib/gcc-lib/ppc-linux/3.3.3/../../../../ppc-linux/bin/ld: warning: ld.so.1, needed by /opt/ELDK-3.1//usr/../ppc_8xx/lib/libc.so.6, not found (try using -rpath or -rpath-link)
/opt/ELDK-3.1//usr/../ppc_8xx/lib/libc.so.6: undefined reference to `_dl_looku[email protected]_PRIVATE'
...
फ़ाइल ld.so.1
libc.so.6
रूप में एक ही निर्देशिका में है।
s -l /opt/ELDK-3.1//usr/../ppc_8xx/lib/ld.so.1
lrwxrwxrwx 1 root root 11 Jan 31 11:43 /opt/ELDK-3.1//usr/../ppc_8xx/lib/ld.so.1 -> ld-2.3.1.so
जहां तक मैं देख सकता हूँ, मैं सही ढंग से सभी आवश्यक पर्यावरण को परिभाषित कर रहा हूँ और Ubuntu बॉक्स (परियोजना "automaked" है) के रूप में बिल्कुल वैसा ही निर्माण प्रणाली का उपयोग कर बनाने की कोशिश।
तो मैं एक स्क्रिप्ट सब कुछ की नकल करने की कोशिश कर लिखा था मेरी automaked configure
करता है:
#!/bin/bash
if [ ! -f confdefs.c ]; then
cat > confdefs.c << EOF
/* confdefs.h */
#define PACKAGE_NAME "xyz"
#define PACKAGE_TARNAME "xyz"
#define PACKAGE_VERSION "1.00"
#define PACKAGE_STRING "xyz 1.00"
#define PACKAGE_BUGREPORT "<[email protected]>"
#define PACKAGE_URL ""
#define PACKAGE "xyz"
#define VERSION "1.00"
/* end confdefs.h. */
int
main()
{
;
return 0;
}
EOF
fi
ARCH=powerpc
export CROSS_COMPILE=ppc_8xx
TOOLCHAIN=ppc-linux-
TOOLCHAIN_ROOT=/opt/ELDK
LD=`which ${TOOLCHAIN}ld`
CC=`which ${TOOLCHAIN}gcc`
GCC=$CC
export CFLAGS="-Wall -g -I${TOOLCHAIN_ROOT}/ppc_8xx/usr/include/"
export CPPFLAGS=$CFLAGS
# export LDFLAGS="-shared"
$CC $CFLAGS $LDFLAGS confdefs.c -o confdefs
यह मैं configure
के रूप में बिल्कुल एक ही त्रुटि देता है।
यदि मैं दूसरी तरफ export LDFLAGS="-shared"
लाइन को अपूर्ण करता हूं, तो यह पूरी तरह से बनाता है!
> ls -l confdefs
-rwxr-xr-x 1 myself users 16136 Fev 1 09:52 confdefs
> file confdefs
confdefs: ELF 32-bit MSB shared object, PowerPC or cisco 4500, version 1 (SYSV), dynamically linked, not stripped
यहाँ किसी को भी मुझे के किसी भी सुराग दे सकता है कि मैं क्या इतना है कि अपनी परियोजनाओं अन्य में एक बॉक्स पर बारीक काम करते हैं और नहीं याद आ रही है?
धन्यवाद!
अपनी परियोजना पर फिर से ऑटोमैक और ऑटोकॉन्फ़ चलाने की कोशिश करें। बीटीडब्लू, एसएसओ एक्सटेंशन का मतलब है कि यह एक साझा ऑब्जेक्ट है, आपको उन साझा ऑब्जेक्ट्स का सही ढंग से उपयोग करने के लिए "-shared" सक्षम होना चाहिए। –
आपको वही त्रुटि मिली है जो मैं Fedora 16 x86_64 पर स्विच करते समय हूं। अब तक हमें निम्नलिखित सिम्लिंक जोड़कर समाधान मिला है "ld.so.1 -> ../../../ppc_8xx/lib/ld.so.1" से bigk-3.1/usr/ppc-linux/lib मुझे संदेह है कि एफ 15 और एफ 16 के बीच पर्यावरण के साथ कुछ बदल गया है। OpenSUSE के लिए वही (11-> 12)। –
अरे सर्गेई, कृपया एक उत्तर पोस्ट करें, इसलिए मैं इसे चुन सकता हूं। आपका कामकाज मेरे लिए काम किया। यह कुछ समझ में आता है क्योंकि लिंकर स्क्रिप्ट्स 'SEARCH_DIR ("/ usr/ppc-linux/lib") जैसे कुछ इंगित करती हैं, लेकिन मुझे अभी भी समझ में नहीं आ रहा है कि यह एक distro पर क्यों काम करता है और दूसरे में नहीं। मुझे लगता है कि यह उनके डेवेल पैकेज (ऑटोटूल या कुछ ऐसा) में मतभेदों के बारे में है। धन्यवाद! – j4x