Sha*_*wat 11 compiling make ld cmake
类似的问题已被问到here,但没有得到答复。
我有一个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
Run Code Online (Sandbox Code Playgroud)
小智 13
似乎找到解决方案的用户后来再也没有分享过。对于试图找到解决方案的人,只需显式添加数学库并添加-ldl
因此-lm,-ldl在gcc您正在编译的行中,它应该没问题。
或者,在大多数情况下,您也可以通过CFLAGS这种方式明确定义和缓解问题。这只是两种解决方法,
例子:
user@compiler-shell$ EXPORT CFLAGS=" -g -O2 -lm -ldl -Wall -Wpointer-arith -finline-functions -ffast-math -funroll-all-loops";
Run Code Online (Sandbox Code Playgroud)
小智 6
我发现这个线程有类似的问题。明确地说,解决方案是在 CMakeLists.txt 文件中查找并更改:
TARGET_LINK_LIBRARIES(lmdemo ${LIBS})
Run Code Online (Sandbox Code Playgroud)
到
TARGET_LINK_LIBRARIES(lmdemo -lm ${LIBS})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
46859 次 |
| 最近记录: |