Как правильно переключаться между версиями gcc? - PullRequest
4 голосов
/ 29 декабря 2011

Я хочу поиграть с C ++ 2011, поэтому мне нужен неизданный gcc 4.7. Мне удалось успешно получить ствол SVN и скомпилировать его.

Я хочу сохранить gcc по умолчанию в моей системе для безопасности, поэтому я настроил gcc4.7 с - префиксом и установил его в нестандартном месте.

Теперь, как мне включить gcc 4.7 вместо gcc по умолчанию в моей системе?

Я уже изменил переменные CC и CXX , я обновил PATH , чтобы он сначала указывал на gcc 4.7 bin dir. Когда я набираю gcc --version , я получаю 4.7 OK.

Но gcc - это больше, чем просто исполняемый файл. В каталоге gcc install много исполняемых файлов. Есть также стандартные включения и std lib c ++.

До настоящего времени каждая запись в блоге / SO вопрос, который я нашел по этой теме, говорит только об исполняемых файлах gcc и g ++ .

Может кто-нибудь дать мне список изменений, которые мне нужно внести в среду, чтобы полностью использовать gcc 4.7? обновить LD_LIBRARY_PATH? Как отдать предпочтение системе gcc 4.7? Есть ли другие вещи, которые следует учитывать?

Заранее спасибо.

Ответы [ 3 ]

2 голосов
/ 29 декабря 2011

Я бы подумал, что THE g ++ в значительной степени запутан в вещах, использующих C ++, поскольку библиотека C перепутана с системой! Любые изменения макета в классах библиотеки C ++ приведут к несовместимости с другими программами или библиотеками C ++. Таким образом, я бы не стал заменять системный компилятор C ++ или, что более важно, его стандартную библиотеку C ++ (если, возможно, поставщик компилятора не решительно заявил, что он сохранил двоичную совместимость с версией, которую вы заменяете).

Чтобы играть или даже использовать другую версию g ++, использование префиксного подхода работает нормально. Все специфичные для компилятора инструменты неявно вызываются из g ++ с использованием соответствующей версии, а такие инструменты, как ar, ld, ranblib и т. Д., В любом случае, в действительности не зависят от версии компилятора. Важными компонентами, используемыми внутри, являются стандартная библиотека (как заголовки, так и библиотека) и препроцессор. При вызове версии g ++ он выясняет, какая из них ему действительно нужна.

Кстати, когда вы хотите поиграть с C ++ 2011, вы также можете взглянуть на Clang.

1 голос
/ 30 декабря 2011

Самый простой ответ: ничего; это просто работает. :)

GCC находит то, что ему нужно, сначала относительно себя, затем в «префиксе», с которым он был настроен, и, наконец, в стандартных местах. Это означает, что это абсолютно безопасно переместить его куда угодно, если вы переместили все этого - но будьте осторожны, что откат может скрыть сбои, если установка не завершена.

0 голосов
/ 29 декабря 2011

Посмотрите документацию по конфигурации GCC . Я использую суффиксы программ, чтобы различать разные версии GCC. Для этого добавьте, например, --progam-suffix=-4.7 к вашему вызову ./configure.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...