Обновите GCC на OSX

Итак, я новый программист, и я только что установил XCode на свой Macbook, чтобы получить GCC. Я думаю, что Xcode — единственный способ получить GCC на OSX. Теперь, когда я запускаю свое приложение Hello World на C++, g++ показывает, что это версия 4.0.1, но когда я ищу команды, начинающиеся с g, я также вижу g++-4.2. Есть ли способ сделать 4.2 по умолчанию, а не 4.0.1, а также есть ли способ обновить gcc до последней версии 4.4.0?

РЕДАКТИРОВАТЬ: Итак, я установил macports и установил gcc4.4, и он отображается на терминале как gcc-mp-4.4, и как мне сделать его по умолчанию с помощью gcc_select, например, какие команды и прочее. Спасибо.


person Karan Bhamra    schedule 08.05.2009    source источник


Ответы (9)


Если вы устанавливаете macports, вы можете установить gcc select, а затем выбрать свою версию gcc.

/opt/local/bin/port install gcc_select

Чтобы увидеть, как используются ваши версии

port select --list gcc

Для выбора версии используйте

sudo port select --set gcc gcc40
person Milhous    schedule 08.05.2009
comment
У меня не установлен этот порт, но у меня все еще есть gcc_select. Однако это более старый Xcode с OS X 10.4. - person Matt K; 08.05.2009
comment
Если вам нужна дополнительная информация о MacPorts, они находятся здесь (macports.org), и у них есть порты для gcc до 4.5. - person Matt K; 08.05.2009
comment
Я сделал это, но когда я запускаю интерпретатор Python, я все еще вижу gcc 4.0.1. - person philgo20; 09.12.2010
comment
Я предполагаю, что мне придется переустановить python2.6 после того, как команда gcc_select будет передана .... Это все? - person philgo20; 09.12.2010
comment
Теперь кажется, что команда port select --list gcc для перечисления и port select --set gcc mp-gcc45 для установки (замените mp-gcc45 своей версией). Вам все еще нужно установить gcc_select. - person tmandry; 17.07.2011
comment
Почему я получил это предупреждение и эту ошибку: Warning: port definitions are more than two weeks old, consider updating them by running 'port selfupdate'. Error: Insufficient privileges to write to MacPorts install prefix.? - person user5779223; 16.02.2016
comment
Когда я запустил port select --list gcc, он вернул Available versions for gcc: none (active), хотя я знаю, что у меня установлены две версии gcc, так что это совсем не помогло. - person user124384; 13.10.2017

Я знаю, что это старый запрос. Но кому-то все же может пригодиться. В текущих версиях MacPorts вы можете выбрать версию gcc по умолчанию с помощью команды port. Чтобы просмотреть доступные версии gcc, используйте:

$ sudo port select --list gcc

Available versions for gcc:
gcc42
llvm-gcc42
mp-gcc46
none (active)

Чтобы установить gcc на версию MacPorts:

$ sudo port select --set gcc mp-gcc46

person Briand06    schedule 27.01.2012
comment
Обязательно сделайте sudo port install gcc_select в первую очередь. Иначе вы получите Error: The 'list' command failed: The specified group 'gcc' does not exist. - person ulidtko; 26.07.2012

Я просто захожу, чтобы сказать, что использование мягкой ссылки для достижения этой цели — ужасная, нехорошая, ужасная идея.

Одной из ключевых особенностей написания программного обеспечения является воспроизводимость — вы хотите каждый раз получать одинаковые результаты. Эти системы настолько сложны, что вы хотите уменьшить все невидимые источники ошибок.

Наличие мягкой ссылки является невидимым источником ошибок. Это то, что вы забудете через месяц, затем перейдете на другую машину и удивитесь, почему вы получаете другие результаты, или вы попытаетесь обновить свою систему, и вы получите странные ошибки, потому что это не так. ожидая softlink там.

Более того, это не гарантирует работу — в частности, неясно, получите ли вы правильные системные включаемые файлы, которые наверняка изменились между итерациями gcc.

gcc_select — это систематический способ делать то же самое, который будет работать предсказуемо, или, в самом худшем случае, вы можете отправить отчет об ошибке и получить возможное исправление или исправить его самостоятельно.

К сожалению :-( gcc_select не влияет на то, какой компилятор использует XCode, поэтому это не тот путь, если вам нужно работать в XCode (что я и делаю). Я до сих пор не знаю, что это может быть.

person Tom Swirly    schedule 04.09.2010
comment
Вы можете указать, какой компилятор использует XCode, в настройках цели или проекта (боюсь, я не помню, где именно) это путь к компилятору. Мне нужно было изменить его, чтобы скомпилировать некоторую библиотеку. - person 11684; 29.07.2014

Следующий рецепт с использованием Homebrew помог мне обновиться до gcc/g++ 4.7:

$ brew tap SynthiNet/synthinet
$ brew install gcc47

Нашел его в сообщении здесь.

person Juan A. Navarro    schedule 02.07.2013

используйте "gcc_select -l"

> gcc_select -l

gcc40 mp-gcc44

> gcc_select mp-gcc44

person Community    schedule 17.01.2010

У вас может быть несколько версий GCC на вашем компьютере, чтобы выбрать ту, которую вы хотите использовать, вызовите ее с полным путем, например. вместо g++ используйте полный путь /usr/bin/g++ в командной строке (зависит от того, где находится ваш gcc).

Для компиляции проектов это зависит от того, какую систему вы используете, я не уверен в Xcode (я доволен банкоматом по умолчанию), но когда вы используете Makefiles, вы можете установить GXX=/usr/bin/g++ и так далее.

ИЗМЕНИТЬ

Теперь есть скрипт xcrun, который можно запросить для выбора подходящей версии инструментов сборки на Mac. Помимо man xcrun, я погуглил это объяснение о инструменты xcode и командной строки, которые в значительной степени обобщают, как их использовать.

person stefanB    schedule 08.05.2009

в /usr/bin типе

sudo ln -s -f g++-4.2 g++

sudo ln -s -f gcc-4.2 gcc

Это должно сработать.

person peter    schedule 12.08.2010
comment
создание ссылок в вашей папке /usr/bin/ — это большой запрет. в конечном итоге вам придется переустанавливать всю ОС, когда дела пойдут плохо - person Guy; 14.06.2019

Вы можете установить GCC вручную

либо через

sudo port install gcc46

или загрузите исходный код с одного из зеркал здесь, например, здесь

tar xzvf gcc-4.6.0.tar.gz cd gcc-4.6.0 ./configure make

ну если у вас несколько версий, то через можно выбрать одну

port select --list gcc

помните, что port на Mac называется macport https://www.macports.org/install.php и добавьте корзину в свой путь export PATH=$PATH:/opt/local/bin

person user702846    schedule 14.10.2019

Все, что Apple отправляет в качестве gcc по умолчанию в xcode (4.2.1 на 10.6, 4.0.1 ранее), хорошо протестировано (и поддерживается) ребятами из Apple и является «стандартом» для создания программного обеспечения на OS X. Все остальное не так, так что подумайте дважды, если вы хотите разрабатывать программное обеспечение или быть бета-тестером gcc/OS X.

person Frank Osterfeld    schedule 14.08.2010
comment
...полтора года спустя GCC 4.2 по-прежнему является стандартом XCode для последней версии Mac OS. Грустно, но верно. - person John Zwinck; 08.04.2012
comment
Джон Звинк: На самом деле, /usr/bin/gcc — это llvm-gcc-4.2, а общая стратегия компиляции явно llvm/clang. Так что я бы не ожидал, что что-то произойдет на фронте gcc/OS X. - person Frank Osterfeld; 10.04.2012
comment
Примечания к выпуску XCode 4.6: Xcode 4.6 — последний выпуск, включающий компилятор LLVM-GCC и отладчик GDB. developer.apple.com/library/mac/#releasenotes/DeveloperTools / - person Frank Osterfeld; 30.01.2013