我有两个版本的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