Недавно я установил gcc 4.9.2 и обнаружил проблему при связывании с библиотеками.
Вывод для пути поиска:
install: /usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.2/
programs: =/usr/libexec/gcc/x86_64-unknown-linux-gnu/4.9.2/:/usr/libexec/gcc/x86_64-unknown-linux-gnu/4.9.2/:/usr/libexec/gcc/x86_64-unknown-linux-gnu/:/usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.2/:/usr/lib/gcc/x86_64-unknown-linux-gnu/:/usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.2/../../../../x86_64-unknown-linux-gnu/bin/x86_64-unknown-linux-gnu/4.9.2/:/usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.2/../../../../x86_64-unknown-linux-gnu/bin/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.2/../../../../x86_64-unknown-linux-gnu/bin/
libraries: =/usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.2/:/usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.2/../../../../x86_64-unknown-linux-gnu/lib/x86_64-unknown-linux-gnu/4.9.2/:/usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.2/../../../../x86_64-unknown-linux-gnu/lib/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.2/../../../../x86_64-unknown-linux-gnu/lib/../lib64/:/usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.2/../../../x86_64-unknown-linux-gnu/4.9.2/:/usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.2/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.2/../../../../lib64/:/lib/x86_64-unknown-linux-gnu/4.9.2/:/lib/x86_64-linux-gnu/:/lib/../lib64/:/usr/lib/x86_64-unknown-linux-gnu/4.9.2/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib64/:/usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.2/../../../../x86_64-unknown-linux-gnu/lib/:/usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.2/../../../:/lib/:/usr/lib/
На самом деле проблема вот в чем:
/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib64/
Мне нужно изменить порядок этих двух библиотек (чтобы lib64 имела более высокий приоритет поиска), потому что в обоих каталогах есть libstdc++.so.6, и мне нужно использовать тот, который находится в папке lib64.
Как это сделать?
Пожалуйста, не делайте:
1, предлагаю изменить LD_LIBRARY_PATH, чтобы явно включить libstdc++.so.6, поскольку я уверен, что в папке x86_64-linux-gnu есть другие вещи, которые являются более старыми версиями в папке lib64 — я обновил g++ из более старой версии.
2, предлагаю явно включить этот lib64/libstdc++.so.6 в параметр g++ -L.
Большое спасибо.
/************************РЕДАКТИРОВАТЬ ДЛЯ ДОПОЛНИТЕЛЬНОЙ ИНФОРМАЦИИ************************ ***/
По запросу ниже, вот более подробная информация о настройке и установке (я скачал исходный код 4.9.2 с gcc.gnu.org, распаковал его и запустил в папке верхнего уровня 4.9.2):
mkdir ../gcc-build &&
cd ../gcc-build &&
../gcc-4.9.2/configure \
--prefix=/usr \
--libdir=/usr/lib \
--enable-shared \
--enable-threads=posix \
--enable-__cxa_atexit \
--disable-multilib \
--with-system-zlib \
--enable-languages=c,c++ &&
make
.../configure
это сделали? Пожалуйста, отредактируйте свой вопрос, чтобы дать более подробную информацию! - person Basile Starynkevitch   schedule 23.02.2015gcc
? Попробуйте, например.gcc-4.8 -v
? - person Basile Starynkevitch   schedule 23.02.2015