'exp @@ GLIBC_2.2.5' sembolüne tanımsız başvuru


11

Benzer soru sorulmuş burada ama cevapsız olduğunu.

Ben Levenberg-Marquardt(bir yerden indirilen) bir uygulama var ve bunu derlemeye çalışıyorum ama aşağıdaki hatayı alıyorum.

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

Birçok yerde, verilen çözüm bazı bayraklar eklemekti (örneğin burada ve burada ). Ama hiçbiri benim için çalışmadı.

İşte Makefile, işte CMakeLists.txt ve işte CMakeCache.txt.


Glibc sürümünüz nedir?
nixeagle

ldd --versionverdi (Ubuntu EGLIBC 2.19-0ubuntu6.3) 2.19.
Shashwat

Lütfen Makefile'nizi ekleyin. Bu açıkça bozuk kitaplık bağımlılıkları (ve olası glib sürümü uyuşmazlıkları) olan bir şeydir.
nixeagle

2
Eklemeyi denediğinizden emin misiniz -lm? Nereye ekledin?
muru

@Shashwat: Bunu tam olarak nereye ekledin? Kodu gönderebilir misiniz? Teşekkürler

Yanıtlar:


8

Çözümü bulan kullanıcı daha sonra hiç paylaşmamış gibi görünüyor. Çözümü bulmaya çalışan çocuklar için sadece matematik kütüphanesini açıkça ekleyin ve-ldl

Yani -lmve -ldliçinde gccçizgi Eğer derleme ve sadece para cezası gitmek gerekir.

Alternatif olarak, çoğu durumda CFLAGSsorunu bu şekilde açıkça tanımlayabilir ve hafifletebilirsiniz. Bunlar çözmenin sadece iki yolu,

Misal:

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

6

Ben ekledim -lmiçine CMakeLists.txtkütüphaneler atanan geldiğini ifade ediyor. Şuan çalışıyor.


4
Eklemeyi ayrıntılı olarak gösterebilir misiniz? Teşekkür ederim
Lucio

3

Bu konuyu benzer bir problemle buldum. Açıkçası, çözüm CMakeLists.txt dosyanızı bulmak ve değiştirmek:

TARGET_LINK_LIBRARIES(lmdemo ${LIBS})

için

TARGET_LINK_LIBRARIES(lmdemo -lm ${LIBS})
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.