我有兩個版本的GCC安裝在我的系統4.6.2和4.7.0。我正在運行Fedora Core 16.GCC沒有鏈接正確的庫
4.6.2安裝在/usr/bin
和4.7.0安裝在/home/nerozehl/local/bin
。 C++的庫和運行庫也編譯並安裝在/home/nerozehl/local/lib
和/home/nerozehl/local/lib64
中。
我也有兩個版本的Boost安裝,庫中/usr/lib64
和/home/nerozehl/local/lib
。 (分別爲Boost 1.47.0和1.49.0)
我遇到的問題是g ++/ld與默認庫鏈接,而不是/home/nerozehl/local
中的新鏈接。我使用configure
產生的Makefile,並且我打電話這樣說:
CXX=g++47 CXXFLAGS="-g -O0 -pg" LDFLAGS="-L/home/nerozehl/local/lib" ./configure --prefix=/home/nerozehl/local
凡g++47
駐留在/home/nerozehl/local/bin
(在我$PATH
)。
當我編譯,一切都很好,並且使用較新的標題,但是當我檢查什麼是鏈接的是:
ldd source/noes
linux-vdso.so.1 => (0x00007fffebfff000)
libboost_filesystem-mt.so.1.47.0 => /usr/lib64/libboost_filesystem-mt.so.1.47.0 (0x0000003c6a800000)
libboost_system-mt.so.1.47.0 => /usr/lib64/libboost_system-mt.so.1.47.0 (0x0000003c6a400000)
libboost_program_options-mt.so.1.47.0 => /usr/lib64/libboost_program_options-mt.so.1.47.0 (0x0000003c6ac00000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x0000003c6dc00000)
libm.so.6 => /lib64/libm.so.6 (0x0000003c68c00000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x0000003c69c00000)
libc.so.6 => /lib64/libc.so.6 (0x0000003c68800000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003c69000000)
librt.so.1 => /lib64/librt.so.1 (0x0000003c69800000)
/lib64/ld-linux-x86-64.so.2 (0x0000003c68400000)
對我的生活中,我無法弄清楚如何強制g ++/ld/configure使用我的較新庫。任何幫助,將不勝感激。
+1使用LDD – pyCthon 2012-03-03 20:04:09
你應該用'-v'選項查看如何在當前庫搜索路徑是這樣的:連接G ++會顯示哪些目錄將被搜索和以何種順序時。爲了避免這個問題,嘗試使用'-L'選項傳遞所需的路徑。我的猜測是它在其他目錄中的本地路徑之前搜索標準路徑。 – 2012-03-03 20:07:46
我正在使用-L/home/nerozehl/local/lib – nerozehl 2012-03-03 20:13:09