пользовательская сборка gcc 4.6.0 в ubuntu 11.04 неправильно ссылается на libstdc ++ - PullRequest
3 голосов
/ 19 апреля 2011

Мой пользовательский gcc 4.6.0, установленный в моем домашнем каталоге на ubuntu 10.04, в большинстве случаев связывает систему libstdc ++ вместо пользовательской (как свидетельствует ldd). чтобы быть более загадочным, с помощью этого недавно созданного gcc, скомпилированные пользовательские библиотеки openmpi связаны правильно, и это единственное программное обеспечение, которое я скомпилировал, которое ведет себя нормально. у кого-нибудь есть объяснение этому или обходной путь?

спасибо

Ответы [ 2 ]

2 голосов
/ 15 июня 2011

Разве нет возможности статически связать libstdc с gcc при настройке?--disable-shared, если я понимаю, как это работает правильно.В худшем случае сделайте еще одну компиляцию gcc с этим ключом и посмотрите, не столкнулись ли вы с проблемой.

0 голосов
/ 25 апреля 2019

Я не знаю, почему это не детализировано более подробно на веб-сайте GCC для конечных пользователей. Часто задаваемые вопросы GCC ясно заявляют, что это общая проблема по libstdc++. Переменные среды неприятны. Заворачивая компоновщик, никто не знает, как это сделать. Редактирование /etc/ld.so.conf не вариант. Добавление -Wl,-rpath везде, давай. Самым простым решением является файл specs. Для типичной 64-битной системы x86 Linux зайдите в вашу пользовательскую установку gcc в dirname `g++ -print-libgcc-file-name` и затем запустите g++ -dumpspecs > specs. Отредактируйте этот файл, найдите раздел *link_command:. После %(link_libgcc) добавьте -rpath /home/user/bin/gcc-9/lib64 (конечно, используйте свой собственный путь). Или добавьте тот же rpath в конец раздела *link:. В качестве альтернативы, настройте gcc с --with-specs='%{!static:%x{-rpath=/home/user/bin/gcc9/lib64} %x{-enable-new-dtags}}'. Наслаждайтесь собственным компилятором C ++, который генерирует двоичные файлы, которые просто работают.

Смотри также:

...