Настройка libstdc++ для данной версии gcc

Новое в Linux здесь. На моей Ubuntu уже были gcc 11 и 12, но я скомпилировал gcc-14 с помощью следующей команды:

./configure -v --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --prefix=/usr/local/gcc-14.1.0 --enable-checking=release --enable-languages=c,c++ --disable-multilib --program-suffix=-14.1.0

потом после make && make install

Я добавил gcc-14 в свой список доступных компиляторов, используя альтернативы обновления:

sudo update-alternatives --install /usr/bin/gcc gcc /usr/local/gcc-14.1.0/bin/gcc-14.1.0 14 --slave /usr/bin/g++ g++ /usr/local/gcc-14.1.0/bin/g++-14.1.0  --slave /usr/bin/gcov gcov /usr/local/gcc-14.1.0/bin/gcov-14.1.0

Однако при компиляции кода cpp, использующего функции С++ 23, я получаю ошибку ссылки:

/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.31' not found

Я думаю, что libstdc++.so используется для gcc-12 или gcc-11. libstdc++.so доступен для gcc-14 по адресу /usr/local/gcc-14.1.0/lib64/libstdc++.so.

Есть ли способ указать, что gcc-14 всегда должен использовать собственный libstdc++? (Без указания статического пути к libstdc++, который будет использоваться во время компиляции внутри моего сценария cmake)

ОТ: Параметры конфигурации --build, --host и --target нужны только для кросс-компиляции.

Some programmer dude 21.07.2024 00:35

@Someprogrammerdude Полезно знать. Перекомпиляция gcc без указания цели/сборки/хоста может решить проблему?

Xemuth 21.07.2024 00:37

Нет, к проблеме это не имеет отношения, но не думаю, что у меня самого с этим возникали проблемы при использовании update-alternatives... Кстати, какую версию Ubuntu вы используете? Разве вы не можете установить gcc-14 и g++-14 с помощью apt? Это то, что я сделал, но я не помню, установлено ли это значение по умолчанию 24.04 или я добавил для него какой-то репозиторий.

Some programmer dude 21.07.2024 00:43

мой дистрибутив основан на Ubuntu 22. У меня нет доступа к gcc-14, поэтому я его скомпилировал. Использование альтернатив обновления gcc --version показывает, как и ожидалось, gcc 14.1.0. Может быть, проблема не в том, что я думаю изначально?

Xemuth 21.07.2024 00:47

Ксемут: Для дальнейшего использования: ОТ в комментарии — это сокращение от «не по теме», и это означает, что оно не означает решения или указания на проблему, но может решить или указать на другие проблемы с тем, что представлено. «Несвязанный» также иногда может использоваться для пометки комментариев с полезной информацией.

Ted Lyngmo 21.07.2024 00:47
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
5
58
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Исправил мою проблему, выполнив:

sudo apt remove gcc-11 gcc-12
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt update
sudo apt upgrade

Новый пакет gcc-13-base установлен и теперь все в порядке.

Другие вопросы по теме