OSX - заменить gcc версии 4.2.1 на 4.9, установленную через Homebrew

Это мучило меня некоторое время. Я пытаюсь скомпилировать огромный файл C++ (я знаю, что он работает так же, как и я, работает на моем компьютере с Arch Linux на работе). Когда я проверил свою версию GCC на моем Mac, он возвращает следующее

Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 6.0 (clang-600.0.57) (based on LLVM 3.5svn)
Target: x86_64-apple-darwin14.1.0
Thread model: posix

Я также установил самую последнюю версию GCC, используя Homebrew с

brew install gcc49

Теперь у меня вопрос: как применить эту недавно установленную версию GCC к версии по умолчанию, которую использует терминал?

Я также знаю, что когда вы используете homebrew для isntall gcc, он называет его gcc-49, чтобы не было путаницы между пакетами.

Я понятия не имею, как заменить версию 4.2.1, которая поставляется с XCode, на версию 4.9, которую я установил.

Спасибо

Редактировать: переключился на мой Mac, чтобы получить полный оператор возврата gcc --version

Редактировать 2: Моя конечная игра здесь, чтобы быть в состоянии перейти к каталогу и иметь возможность печатать

make
sudo make install

установить созданный демон. Прямо сейчас это возвращает тонны ошибок со случайными пакетами и стандартной библиотекой

4 ответа

Решение

По умолчанию, homebrew размещает исполняемые файлы (двоичные файлы) для пакетов, в которые он устанавливает /usr/local/bin - это довольно разумное место для двоичных файлов, установленных локальными пользователями, когда вы думаете об этом, - по сравнению с /bin который содержит стандартные двоичные файлы, принадлежащие ядру ОС. Так что ваши brew команда должна была установить gcc-4.9 в /usr/local/bin, Вопрос сейчас в том, как его использовать... у вас есть несколько вариантов.

Опция 1

Если вы просто хотите скомпилировать одну или две вещи сегодня и завтра, а затем, возможно, не использовать компилятор снова, вы можете просто вызвать gcc установлен homebrew с полным путем, как это:

/usr/local/bin/gcc-4.9 --version

Вариант 2

Если вы собираетесь использовать gcc довольно много, это становится немного утомительным, явно вводя полный путь каждый раз, так что вы можете добавить следующее в ваш ~/.bash_profile

export PATH=/usr/local/bin:$PATH

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

gcc-4.9 --version

Вариант 3

Если вы просто хотите использовать gcc чтобы вызвать компилятор, не беспокоясь о текущей версии, вы можете сделать вариант 2 выше и дополнительно создать символическую ссылку, подобную этой

cd /usr/local/bin
ln -s  gcc-4.9  gcc

Это позволит вам запустить homebrew-установлены gcc просто набрав gcc в командной строке, вот так

gcc --version

Замечания:

Если позже вы захотите установить, скажем gcc-4.13 или, например, вы бы сделали brew install как и прежде, измените символическую ссылку следующим образом:

cd /usr/local/bin
rm gcc               # remove old link from gcc to gcc-4.9
ln -s gcc-4.13 gcc   # make new link from gcc to gcc-4.13

Просто обновив порядок $PATH в ~/.bash_profile до установленной версии brew 'export PATH=/usr/local/Cellar/gcc/5.1.0/bin:$PATH' было недостаточно, чтобы сделать переключение для меня

изменение псевдонима в вашем ~. / bash_profile (alias gcc='gcc-5') работает, но может сбивать с толку то есть which gcc вернет версию Clang

для меня работало сделать символическую ссылку в каталоге brew gcc и обновить путь (пункт 1 выше)

cd /usr/local/Cellar/gcc/5.1.0/bin/gcc
ln -s gcc-5 gcc

сейчас which gcc возвращает правильную версию 5.1.0

Загрузите gcc binaries untar и скопируйте файлы bin, lib include share и libexec в свой каталог /usr, затем введите gcc --version, это то, что я ожидаю увидеть

gcc - версия gcc (GCC) 4.9.2 20141029 (предварительная версия) Copyright (C) 2014 Free Software Foundation, Inc. Это свободное программное обеспечение; см. источник для условий копирования. Там нет гарантии; даже не для ТОВАРНОЙ ДЕЯТЕЛЬНОСТИ или ПРИГОДНОСТИ ДЛЯ ОСОБЫХ ЦЕЛЕЙ.

OS X не идет с установленным GCC (4.2.1 или иначе). Clang - это системный компилятор по умолчанию, который существует уже некоторое время. Он использует заголовки C++ из 4.2.1 при вызове как GCC. Вы пытались компилировать свой код с помощью Clang, вместо того, чтобы вызывать gcc (который вызывает Clang)? Он имеет более современные заголовки и поддержку C++, чем режим эмуляции GCC.

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