2011-02-06 11 views
12

IDE olarak Netbeans 6.9 kullanarak bir C++ uygulaması yapıyorum. saf C kütüphanesinde etrafında sarıcı bir C++ kütüphane var/usr/bin/ld: uyarı: abc.so, xyz.so tarafından gerekli bulunamadı (-rpath veya -rpath-link kullanarak) "

doğru Burada g ürettiği çıkışı ++ ve bağlayıcı (Kütüphane Dosya ekle seçeneğini kullanarak) projeye dosyayı ekledik:..

g++ -o dist/Debug/GNU-Linux-x86/testluaembed build/Debug/GNU-Linux-x86/src/main.o build/Debug/GNU-Linux-x86/src/LuaBinding.o -L../../mainline/tanlib_core/dist/Debug/GNU-Linux-x86 -L../../mainline/tanlib++/dist/Debug/GNU-Linux-x86 -L/usr/lib ../../mainline/tanlib_core/dist/Debug/GNU-Linux-x86/libtanlib_core.so ../../mainline/tanlib++/dist/Debug/GNU-Linux-x86/libtanlibpp.so /usr/lib/liblua5.1.a /usr/lib/libtolua++5.1.a /usr/local/boost_1_45_0/stage/lib/libboost_filesystem.a /usr/local/boost_1_45_0/stage/lib/libboost_system.a 
/usr/bin/ld: warning: libtanlib_core.so, needed by ../../mainline/tanlib++/dist/Debug/GNU-Linux-x86/libtanlibpp.so, not found (try using -rpath or -rpath-link) 
/usr/lib/liblua5.1.a(loadlib.o): In function `ll_loadfunc': 
/usr/lib/liblua5.1.a(loadlib.o): In function `ll_loadfunc': 
/usr/lib/liblua5.1.a(loadlib.o): In function `ll_loadfunc': 
/usr/lib/liblua5.1.a(loadlib.o): In function `ll_loadfunc': 
/usr/lib/liblua5.1.a(loadlib.o): In function `gctm': 
collect2: ld returned 1 exit status 
make[2]: *** [dist/Debug/GNU-Linux-x86/testluaembed] Error 1 
make[1]: *** [.build-conf] Error 2 
make: *** [.build-impl] Error 2 

C++ sarıcı kitaplığı ldd çalıştırın ve bu çıktıyı var:

$ldd libtanlibpp.so 
    linux-vdso.so.1 => (0x00007fff123c0000) 
    libtanlib_core.so => not found 
    libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007fe4f0fde000) 
    libm.so.6 => /lib/libm.so.6 (0x00007fe4f0d5a000) 
    libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00007fe4f0b43000) 
    libc.so.6 => /lib/libc.so.6 (0x00007fe4f07c0000) 
    /lib64/ld-linux-x86-64.so.2 (0x00007fe4f15ee000) 

Dosya, makinemde var olmasına rağmen, kütüphane önbelleğimde görünmüyor. Ldconfig kullanmayı denedim, ancak sorun devam ediyor. Bunu nasıl çözeceğiniz konusunda bir fikrin var mı? Aksi ldconfig bulamazsınız -

cevap

6

libtanlib_core.so yerleştirildiği dizin /etc/ld.so.conf (veya /etc/ld.so.conf.d/) yapılandırılan olduğundan emin olun.

+0

Bu bir yapılandırma sorunu olduğundan şüphelenildi. Nasıl "libtanlib_core.so'nun yerleştirildiği dizinin /etc/ld.so.conf dosyasında yapılandırıldığından emin olun". Bu dizini ld.so.conf'a nasıl yerleştireceğimi açıklayabilir misiniz? Dosyayı manuel olarak mı düzenlerim yoksa bir araç kullanmam gerekir mi? – oompahloompah

+0

@oompahloompah Manuel düzenleme işi yapacak –

+0

Teşekkürler. Bunu zaten denedim ve işe yaradı. – oompahloompah