OSX - замените gcc версии 4.2.1 на 4.9, установленную через Homebrew
Это уже надвигало меня на некоторое время. Я пытаюсь скомпилировать огромный файл С++ (я знаю, что он работает, так как я отлично работаю на моем компьютере 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, чтобы получить полную инструкцию return gcc -version
Изменить 2:
Моя конечная игра здесь состоит в том, чтобы иметь возможность перейти к каталогу и иметь возможность вводить
make
sudo make install
чтобы установить демон, который был сделан. Прямо сейчас, что возвращает массу ошибок со случайными пакетами и стандартной библиотекой
Ответы
Ответ 1
По умолчанию 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
-installed gcc
, просто набрав gcc
в командной строке, например
gcc --version
Примечание:
Если вы позже захотите установить, скажем gcc-4.13
или somesuch, вы бы сделали свой 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
Ответ 2
просто обновление порядка $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
Ответ 3
OS X не поставляется с установленной GCC (4.2.1 или иначе). Clang является системным компилятором по умолчанию и уже некоторое время. Он использует заголовки С++ из 4.2.1 при вызове как GCC. Вы пробовали компилировать свой код с Clang изначально, вместо вызова "gcc" (который вызывает Clang)? Он имеет более современные заголовки и поддержку С++, чем режим эмуляции GCC.
Ответ 4
Загрузите 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.
Это бесплатное программное обеспечение; см. источник условий копирования. Здесь нет
гарантия; даже для КОММЕРЧЕСКОЙ ЦЕННОСТИ или ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ.