Я недавно установил , gcc 4.8
используя brew
на OSX 10.7.5 (Lion)
. Теперь я могу скомпилировать с gcc 4.8
помощью
g++-4.8 some_file.c
или по умолчанию gcc 4.2
с помощью
g++ some_file.c
Я хочу использовать gcc 4.8
в качестве компилятора по умолчанию для Xcode
и если я печатаю gcc
на терминале. Я полагаю, я должен изменить gcc-related
ссылки внутри dirname $(which gcc)
.
Когда я делаю
ls -al $(dirname $(which gcc)) | grep 'gcc\|g++\|c++'
Я получаю следующее:
lrwxr-xr-x 1 root wheel 7 Jul 31 12:17 c++ -> clang++
-rwxr-xr-x 1 root wheel 909360 Nov 18 2011 c++filt
lrwxr-xr-x 1 root wheel 5 Jul 31 12:17 clang++ -> clang
lrwxr-xr-x 1 root wheel 12 Jul 31 12:17 g++ -> llvm-g++-4.2
lrwxr-xr-x 1 root wheel 12 Jul 31 12:17 gcc -> llvm-gcc-4.2
lrwxr-xr-x 1 root wheel 28 Jul 31 12:17 gcov-4.2 -> ../llvm-gcc-4.2/bin/gcov-4.2
lrwxr-xr-x 1 root wheel 52 Jul 31 12:17 i686-apple-darwin11-llvm-g++-4.2 -> ../llvm-gcc-4.2/bin/i686-apple-darwin11-llvm-g++-4.2
lrwxr-xr-x 1 root wheel 52 Jul 31 12:17 i686-apple-darwin11-llvm-gcc-4.2 -> ../llvm-gcc-4.2/bin/i686-apple-darwin11-llvm-gcc-4.2
lrwxr-xr-x 1 root wheel 32 Jul 31 12:17 llvm-cpp-4.2 -> ../llvm-gcc-4.2/bin/llvm-cpp-4.2
lrwxr-xr-x 1 root wheel 32 Jul 31 12:17 llvm-g++ -> ../llvm-gcc-4.2/bin/llvm-g++-4.2
lrwxr-xr-x 1 root wheel 32 Jul 31 12:17 llvm-g++-4.2 -> ../llvm-gcc-4.2/bin/llvm-g++-4.2
lrwxr-xr-x 1 root wheel 32 Jul 31 12:17 llvm-gcc -> ../llvm-gcc-4.2/bin/llvm-gcc-4.2
lrwxr-xr-x 1 root wheel 32 Jul 31 12:17 llvm-gcc-4.2 -> ../llvm-gcc-4.2/bin/llvm-gcc-4.2
Когда я бегу: which gcc-4.8
я получаю /usr/local/bin/gcc-4.8
.
Шаги, чтобы сделать это, были бы очень полезны.
Пожалуйста и спасибо.
clang 3.3
эквивалентноgcc 4.8
? Я верю, что тоже могуbrew install
.Ответы:
Предполагая, что вы используете bash (это значение по умолчанию), вы можете добавить / usr / local / bin в качестве основного приоритета в PATH, например:
Это обеспечит проверку / usr / local / bin перед всеми другими областями вашего пути. Затем просто запустите новый сеанс терминала, чтобы загрузить новую переменную.
Еще один способ сделать это:
источник
usr/local/bin
.echo $PATH
показывает: / opt / local / bin: / opt / local / sbin: / opt / local / include: / usr / local / mysql / bin: / usr / bin / bjam: / usr / bin: / bin: / usr / sbin: / sbin: / usr / local / bin: / usr / X11 / bin: / usr / local / go / bin: / usr / texbin/usr/local/bin
чтобы появиться 1-ым вPATH
- который не имел никакого эффекта - вызовgcc
все еще смотрит на.gcc 4.2
Я тогда вручную создал символические ссылки, но когда я открываю новое окно терминала иg++
или (cc|c++|gcc
), все не найдены. Странный. Спасибо за вашу помощь/usr/bin
какой-либо Unix (то есть MacOS X) ... если только вы не специалист, работающий над источниками новой версии следующей версии Unix ☺.Спасибо вам всем за вашу помощь. В итоге я создал псевдонимы
~/.bash_profile
следующим образом:Ответ от Линкен очень полезен, но я адаптировал его под псевдонимами, так как мне легче отменить при необходимости.
В частности, если
PATH
установлено так, что/usr/local/bin
(где brew помещает ссылкуgcc 4.8
) появляется раньше, чем появляется/usr/bin
(гдеgcc
связано по умолчанию), то создание ссылок, как предложил Ликен внутри,/usr/local/bin
теоретически должно работать для меня. На практике это не так по какой-то причине - ошибка с компоновщиком и псевдонимы обходят эту ошибку, и мне тоже не нужно решать эту проблему.Другое преимущество псевдонимов заключается в том, что мне не нужно связывать то, с чем я хочу, чтобы справился homebrew, и не нужно конкурировать с тем инструментом, для которого версия gcc связана в
/usr/local
источник
/usr/local/bin
. У вас также могут быть установлены и скрыты другие двоичные файлы из-за неправильного позиционирования/usr/local/bin
в вашем PATH. Пожалуйста, рассмотрите еще раз мой ответ, он нападает на вашу реальную проблему один раз, правильно и навсегда.PATH
и поставил/usr/local/bin
перед всем. Я признаю, что ваше утверждение верно и что мне нужно было изменитьPATH
, но (в моем случае - т.е. приbrew
установке по умолчаниюgcc 4.8
) я по-прежнему не буду звонитьgcc 4.8
по умолчанию при вызове,gcc
потому что по умолчанию нет символической ссылки между ними. Мне пришлось вручную создать его, как я делал выше.gcc
прямо из терминала. Если вы используете make-файл,clang
он все еще используется, я обнаружил эту проблему только при использовании опции компилятора, доступной только вgcc
.Я использую для gcc-4.8:
и вернемся к яблочному gcc:
или поместите это в файл и затем:
source <file>
источник
Давайте предположим, что ваша фактическая инициализация оболочки выполнена
~/.profile
, и вам придется изменить ее так, чтобы она/usr/local/bin
опередила любой другой компонент PATH, гдеgcc
находятся все связанные с ним двоичные файлы.Вот способ выполнить эту чистую модификацию:
Осторожно: если ваш
~/.profile
уже структурирован, этот сценарий оболочки нужно будет настроить вручную, чтобы он соответствовал правильному определению PATH в нужном месте.источник
PATH
чтобы/usr/local/bin
увидеть первым. Это, вероятно, избавит меня от головной боли в будущем. Я хотел бы +1 тебе. Моя проблема, тем не менее, заключается в том, чтоgcc
все еще связано с,gcc 4.2
а неgcc 4.8
потому, что нет никакой ссылки дляgcc -> gcc-4.8
в/usr/local/bin
. Мне по-прежнему нужно либо псевдонимgcc
какgcc-4.8
внутри~/.profile
или symlink (ln -s gcc-4.8 gcc
) в/usr/local/bin
после обновленияPATH
с вашим сценарием. Вы?brew
, не добавил правильные символические ссылки. Вы читали этот ответ на ту же тему: apple.stackexchange.com/a/38247/22003 ?Предполагается, что создание псевдонима или связывание с различными двоичными файлами gcc заставит их использовать свое собственное включение перед папкой включения системы по умолчанию.
источник