2015-01-06 3 views
7

Я пытаюсь заставить Mac OSX Yosemite использовать gcc вместо clang, когда cc вызывается, но независимо от того, что я делаю, он отказывается играть вместе. Я уже пробовал изменить bash_profile/bashrc и даже переосмыслить символическую ссылку, но безрезультатно - каждый раз, когда я вызываю «cc», он все еще звонит, что работает. Я пытаюсь заставить его быть gcc вместо (и нет, просто вызов gcc не вариант).Установите cc в gcc вместо clang на OSX Yosemite

Ранее я задал аналогичный вопрос (Make gcc default c compiler on Yosemite/disable clang).

+1

Мне всегда интересно, когда люди говорят, что хотят использовать gcc над clang - есть ли у вас идеологические причины или какая-то другая цель? –

+1

Нет, мне просто нужно запустить очень тайную часть программного обеспечения, которая предполагает gcc, но не может работать с clang. – Hendrik

+3

В XCode 6 'gcc' является ссылкой на' clang', а не на подлинную 'gcc'. Вам нужно будет создать пользовательскую сборку GCC в какой-либо форме или форме, а затем изменить ссылки (и риск их изменения изменится, если вы обновите XCode и снова установите инструменты командной строки). –

ответ

6

Вы не должны этого делать. Многие инструменты полагаются на установочные файлы, чтобы указать на то, что они должны. Другой вариант - установить переменную окружения CC на gcc и вызывать компиляцию с $CC ..., а не cc ...; эта переменная среды также будет поднята при создании пакетов через configure (autotools) или cmake.

Это также совместимый подход с MacPorts версиями GCC (например, гораздо более до даты GCC-4.9.2), который может быть установлен с: sudo port select --set gcc mp-gcc49

+0

Я попытался установить переменные окружения, и это не сработало. Это также не тот случай, когда я вызываю cc или gcc вручную или имею какой-либо реальный контроль над вызываемым, поэтому вместо этого я пытаюсь заставить cc просто запустить gcc. – Hendrik

+0

@ Хендрик. Я думаю, вы могли бы попробовать настроить псевдоним, например, 'alias cc =" gcc "' (bash) или 'alias cc 'gcc'' ([t] csh). Но это также [проблематично] (http://unix.stackexchange.com/questions/1496/why-doesnt-my-bash-script-recognize-aliases). –

+0

Содержит ли программное обеспечение хотя бы «PATH»? Вы можете попробовать дать ему среду, которая знает только о gcc (и не clang) – sapi

9

Ни OS X, ни Xcode поставляется с реальным GCC. Для совместимости со сценариями, которые предполагают, что компилятор называется «gcc», он имеет исполняемые файлы под этим именем, но все они являются фронтами для Clang. Никакое количество символических ссылок, установка переменных среды или настройка псевдонимов не позволяют этим исполняемым файлам запускать реальный GCC.

Если вы хотите GCC, вам необходимо установить его. Вы можете сделать это, используя один из менеджеров пакетов, например MacPorts (тот, с которым я знаком). Я уверен, вы также можете использовать Homebrew.

Вы не должны изменять что-либо в/usr/bin. Если вы уже это сделали, вы должны восстановить то, что вы изменили, если это возможно.

Управляемые менеджеры пакетов также не будут изменять этот каталог. Они должны быть установлены в отдельный каталог, такой как/opt/local/bin,/usr/local/bin или тому подобное. В этом случае вы захотите изменить свой PATH, чтобы поместить эти каталоги раньше, чем/usr/bin.

Смежные вопросы