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.