В моей системе установлены две версии GCC 4.6.2 и 4.7.0. Я использую Fedora Core 16.
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 использовать мои новые библиотеки. Любая помощь будет оценена по достоинству.