невизначене посилання на символ '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.
Шашват

Будь ласка, включіть свій Makefile. Це явно щось із порушеними залежностями бібліотеки (та можливими невідповідностями версії glib).
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
Чи можете ви детально показати додаток? Дякую
Лусіо

3

Я знайшов цю тему з подібною проблемою. Очевидно, рішення полягає в пошуку та зміні вашого файлу CMakeLists.txt:

TARGET_LINK_LIBRARIES(lmdemo ${LIBS})

до

TARGET_LINK_LIBRARIES(lmdemo -lm ${LIBS})
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.