Подтвердить что ты не робот

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

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

4b9b3361

Ответ 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. Это бесплатное программное обеспечение; см. источник условий копирования. Здесь нет гарантия; даже для КОММЕРЧЕСКОЙ ЦЕННОСТИ или ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ.