Pertanyaan serupa telah diajukan di sini tetapi tidak dijawab.
Saya memiliki implementasi Levenberg-Marquardt
(diunduh dari suatu tempat) dan saya mencoba mengkompilasinya tetapi mendapatkan kesalahan berikut.
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
Di banyak situs, solusi yang diberikan adalah menambahkan beberapa bendera (misalnya di sini dan di sini ). Tapi tidak ada yang bekerja untuk saya.
Berikut adalah Makefile, di sini adalah CMakeLists.txt dan di sini adalah CMakeCache.txt.
ldd --version
memberi(Ubuntu EGLIBC 2.19-0ubuntu6.3) 2.19
.-lm
? Di mana Anda menambahkannya?Jawaban:
Sepertinya pengguna yang menemukan solusi tidak pernah membagikannya nanti. Untuk pria yang mencoba mencari solusinya cukup tambahkan perpustakaan matematika secara eksplisit dan juga tambahkan
-ldl
Jadi
-lm
dan-ldl
digcc
baris Anda mengkompilasi dan itu akan baik-baik saja.Atau, dalam banyak kasus Anda juga dapat secara eksplisit mendefinisikan
CFLAGS
dan mengurangi masalah dengan cara itu. Ini hanya dua cara pemecahan,Contoh:
sumber
Saya telah menambahkan
-lm
keCMakeLists.txt
tempat perpustakaan ditugaskan. Ini bekerja sekarang.sumber
Saya menemukan utas ini dengan masalah yang sama. Secara eksplisit, solusinya adalah menemukan dan mengubah file CMakeLists.txt Anda:
untuk
sumber