การอ้างอิงที่ไม่ได้กำหนดสัญลักษณ์ '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


รุ่น glibc ของคุณคืออะไร?
nixeagle

ldd --version(Ubuntu EGLIBC 2.19-0ubuntu6.3) 2.19ให้
Shashwat

โปรดรวม Makefile ของคุณ นี่คือบางสิ่งที่ชัดเจนกับการพึ่งพาไลบรารีที่ใช้งานไม่ได้
nixeagle

2
คุณแน่ใจว่าคุณได้พยายามเพิ่ม-lm? คุณเพิ่มไว้ที่ไหน
muru

@Shashwat: คุณเพิ่มสิ่งนี้ไว้ตรงไหน? คุณช่วยโพสต์รหัสได้ไหม ขอบคุณ

คำตอบ:


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
คุณสามารถแสดงรายละเอียดเพิ่มเติมได้หรือไม่ ขอบคุณ
Lucio

3

ฉันพบกระทู้นี้ด้วยปัญหาที่คล้ายกัน วิธีแก้ปัญหาคือค้นหาและเปลี่ยนแปลงในไฟล์ CMakeLists.txt ของคุณอย่างชัดเจน:

TARGET_LINK_LIBRARIES(lmdemo ${LIBS})

ถึง

TARGET_LINK_LIBRARIES(lmdemo -lm ${LIBS})
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.