'' exp @@ GLIBC_2.2.5 'प्रतीक के लिए अपरिभाषित संदर्भ


11

इसी तरह का सवाल यहां पूछा गया है लेकिन अनुत्तरित है।

मेरे पास एक कार्यान्वयन है Levenberg-Marquardt(कहीं से डाउनलोड किया गया है) और मैं इसे संकलित करने की कोशिश कर रहा हूं लेकिन निम्न त्रुटि हो रही है।

gauravloj@vertex:~/Documents/source_code/non-rigid_registration/Gauss_newton/levmar-2.6$ make
[ 87%] Built target levmar
Linking C executable lmdemo
/usr/bin/ld: CMakeFiles/lmdemo.dir/lmdemo.c.o: undefined reference to symbol 'exp@@GLIBC_2.2.5'
//lib/x86_64-linux-gnu/libm.so.6: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make[2]: *** [lmdemo] Error 1
make[1]: *** [CMakeFiles/lmdemo.dir/all] Error 2
make: *** [all] Error 2

कई साइटों पर, दिए गए समाधान में कुछ झंडे (जैसे यहाँ और यहाँ ) जोड़ना था । लेकिन उनमें से किसी ने भी मेरे लिए काम नहीं किया।

यहाँ Makefile है, यहाँ CMakeLists.txt है और यहाँ CMakeCache.txt है।


आपका ग्लिब संस्करण क्या है?
nixeagle

ldd --versionदे दिया (Ubuntu EGLIBC 2.19-0ubuntu6.3) 2.19
शास्वत

कृपया अपना मेकफाइल शामिल करें। यह स्पष्ट रूप से टूटी हुई पुस्तकालय निर्भरता (और संभव ग्लिब संस्करण बेमेल) के साथ कुछ है।
निक्करल

2
क्या आप वाकई जोड़ना -lmचाहते हैं? आपने इसे कहां जोड़ा?
मुरु

@ शाश्वत: आपने इसे कहाँ जोड़ा है? क्या आप कृपया कोड पोस्ट कर सकते हैं? धन्यवाद

जवाबों:


8

लगता है कि समाधान खोजने वाले उपयोगकर्ता ने इसे बाद में कभी साझा नहीं किया। उन लोगों के लिए जो समाधान खोजने की कोशिश कर रहे हैं, बस गणित की लाइब्रेरी को स्पष्ट रूप से जोड़ें और जोड़ें-ldl

इसलिए -lmऔर -ldlउस gccपंक्ति में जिसे आप संकलित कर रहे हैं और यह ठीक होना चाहिए।

वैकल्पिक रूप से, ज्यादातर मामलों में आप CFLAGSइस तरह से समस्या को स्पष्ट रूप से परिभाषित और कम कर सकते हैं । ये हल करने के सिर्फ दो तरीके हैं,

उदाहरण:

user@compiler-shell$ EXPORT CFLAGS=" -g -O2 -lm -ldl -Wall -Wpointer-arith -finline-functions -ffast-math -funroll-all-loops";

6

मैंने जोड़ा -lmहै CMakeLists.txtजहाँ पुस्तकालयों को सौंपा जा रहा है। अब यह काम कर रहा है।


4
क्या आप विस्तार से दिखा सकते हैं? धन्यवाद
लुसियो

3

मुझे यह धागा एक समान समस्या के साथ मिला। स्पष्ट रूप से, समाधान आपके CMakeLists.txt फ़ाइल को खोजने और बदलने का है:

TARGET_LINK_LIBRARIES(lmdemo ${LIBS})

सेवा

TARGET_LINK_LIBRARIES(lmdemo -lm ${LIBS})
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.