Як встановити GCC через Homebrew?


79

Я використовую виключно Homebrew (тобто не використовую MacPorts або Fink). Я також хочу звести ручні установки до мінімуму. 1

… Але як я можу встановити GCC?

Перш за все, я, звичайно, встановив Xcode, але поточна версія не постачається з гідно оновленою GCC (мені потрібно ata мінімум 4,5, але я вважаю за краще останній) - адже він не постачається з належним GCC взагалі (він доставляє лише Clang), і це, здається, є проблемою для Homebrew ...

Мені відомо про список спеціальних компіляторів GCC та крос-компіляторів, але насправді всі ці установки потребують уже встановленого GCC - принаймні, brewing вони не вдається з помилками лінкера на Lion, які я приписую Clang, і -use-gccне працює для очевидних причини.

brew doctor згадує лише те, що я вже знаю, що не встановлено GCC (4.2.x).


1 Раніше я змішував MacPorts, Homebrew та деякі ручні установки, і закінчив роботу з технічним обслуговуванням та версіями. Я не хочу йти туди знову.


Який результат gcc --version? Я отримую, i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)і я просто встановив Xcode від MAS. Крім того, який результат echo $PATH?
Gio

@Gio У мене такий же вихід. $PATHє звичайним (зрештою, це майже порожня система): /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin… але я не думаю, що це має значення. Формули, надані homebrew-alt, просто застаріли і не працюють з Clang.
Конрад Рудольф

1
Навіщо використовувати Homebrew? MacPorts добре керує кількома версіями компіляторів. І MacPorts може робити все, що може зробити Homebrew.
Джефф Берджес

@JeffBurdges Homebrew краще. В майже будь-якій категорії.
Конрад Рудольф

2
Як так? Якщо чесно, мені не подобається Homebrew здебільшого лише тому, що йому не вистачає (а) описів пакунків та (b) математичних пакетів. В цілому MacPorts, можливо, у шість разів більше пакетів, ніж Homebrew, але так, відсутні. Я в цілому задоволений MacPorts, хоча, очевидно, я б хотів, щоб вони інтегрувались з такими менеджерами мовних пакетів, як CPAN, CTAN, Caball тощо.
Джефф Бердджес

Відповіді:


30

Рішення , запропоноване @Konrad Rudolph не зовсім коректно більше , як формула GCC , що він згадав була перенесена з homebrew/dupesв homebrew/versions. Ви можете вибрати, яку версію GCC встановити. Наприклад, на момент написання цієї відповіді доступні версії 4.5, 4.7 та 4.8. Ви можете перевірити, які версії доступні тут .

Словом, ви можете встановити GCC 4.8, використовуючи

brew tap homebrew/versions
brew install [flags] gcc48

Ви можете переглянути наявні прапори встановлення за допомогою

brew options gcc48

Я спробував це, і мені вдалося встановити, але він вмирає так:gcc-4.8 hello.c gcc-4.8: error trying to exec 'as': execvp: No such file or directory
Warren P

@WarrenP Ви встановили будь-який з них [flags]? На своїх машинах я встановив без будь-яких прапорів, і це чудово працює. Чому б ви не спробували зателефонувати gcc-4.8без жодного вхідного файлу і побачити, чи не трапляється смертельна помилка? Спробуйте також ls /usr/local/Cellar/gcc48/4.8.0/binпобачити, чи містить цей каталог gcc-4.8.
Йіханго

Він містить gcc-4.8 і gcc-4.8 --versionпрацює, але він не може виконуватись із другорядним інструментом з назвою, asі тому він гине.
Warren P

Хм ... Чесно кажучи, я не маю уявлення, як це вирішити. Можливо, нам доведеться чекати ще досвідченого користувача ...
yihangho

2
@nkint Або додайте це alias g++='g++-4.8'у свій .bashrc.
Йіханго

38

Розчин домашнього пива

Щоб відповісти на моє власне запитання, homebrew-versionsзараз є досить сучасна формула GCC . Його можна встановити за допомогою

brew install [flags] https://raw.github.com/Homebrew/homebrew-versions/gcc48.rb

Де [flags]слід містити всі необхідні мови, наприклад ( --enable-cxx --enable-fortran).

Це дозволить встановити виконувані файли з суфіксом, тобто gccпотрібно мати доступ, gcc-versionщоб уникнути сутичок. При необхідності можна створити відповідні посилання, щоб зробити цю версію типовою.

Ручна установка

Крім того , оновлений GCC (за часом написання) може бути складений вручну за допомогою наступного сценарію оболонки:

VERSION=4.7.0
PREFIX=/usr/gcc-$(VERSION)
LANGUAGES=c,c++,fortran
MAKE=make
# Or
# MAKE='make -j 4' # to compile using four cores

brew-path() { brew info $1 | head -n3 | tail -n1 | cut -d' ' -f1; }

# Prerequisites

brew install gmp
brew install mpfr
brew install libmpc

# Download & install the latest GCC

mkdir -p $PREFIX
mkdir temp-gcc
cd temp-gcc
wget ftp://ftp.gnu.org/gnu/gcc/gcc-$VERSION/gcc-$VERSION.tar.gz
tar xfz gcc-$VERSION.tar.gz
rm gcc-$VERSION.tar.gz
cd gcc-$VERSION

mkdir build
cd build

../configure \
   --prefix=$PREFIX \
   --with-gmp=$(brew-path gmp) \
   --with-mpfr=$(brew-path mpfr) \
   --with-mpc=$(brew-path libmpc) \
   --program-suffix=-$VERSION \
   --enable-languages=$LANGUAGES \
   --with-system-zlib \
   --enable-stage1-checking \
   --enable-plugin \
   --enable-lto \
   --disable-multilib

$MAKE bootstrap

make install

# Uncomment for cleanup …
# cd ../../..
# rm -r temp-gcc

Це поставить GCC на шлях /usr/gcc-4.7.0. Тепер все, що вам потрібно зробити, це або створити посилання на виконувані файли, або додати binкаталог до $PATHзмінної.


1
Намагаючись скласти робочу версію вина, я також зіткнувся з проблемою відсутнього gcc - на жаль, встановлення v4.7 через homebrew дало мені деякі помилки; тому я пішов на Apple v4.2 за допомогою, brew tap homebrew/dupesа за ним brew install apple-gcc42. Це допомогло мені отримати робочий gcc та вино. Також ви можете отримати бінарні файли (як це робить домашній): r.research.att.com/tools
iolsmit

@iolsmit Ви обов'язково спробуйте встановити GCC 4.7 знову, чистим, сучасним Homebrew. Це повинно працювати як шарм. Якщо ні, будь ласка, подайте помилку до сервісів Homebrew-dupes.
Конрад Рудольф

3
brew tap homebrew/dupes; brew install gcc --use-llvm. Дивіться github.com/Homebrew/homebrew-dupes/isissue/20
phs

@KonradRudolph скрізь, де я звертаюся, ти відповідаєш на запитання, які я задаю! Дякую :)
Рік Сміт-Унна

1
@Warren Не потрібно кричати - але дякую за нагадування, тому що yihang опублікував кращу актуальну відповідь, яку я зараз прийняв.
Конрад Рудольф

13

Я сьогодні побачив, що хтось посилається на цю стару публікацію. Найкращий спосіб встановити GCC зараз на домашній мові brew install gcc. Якщо у вас встановлені інструменти командного рядка XCode (вони відокремлені від XCode; ви можете встановити їх xcode-select --install), буде встановлена ​​попередньо складена версія (що дуже швидко).


3

У мене теж була ця проблема. Більше того, що мені потрібно використовувати gfortran, який не постачається зі стандартною (застарілою) установкою llvm-gcc для Mac.

Я виявив, що високопродуктивні обчислювальні версії gcc є сучасними та чудово працюють на Lion.


Я спробував це. Мало того, що це не спрацювало, але техніка установки, яку він використовує, досить небезпечна. Мені потрібно близько години, щоб обережно все скасувати.
Боб Аман

2
О, я повинен був сказати, що не встановлюю його так, як він пропонує. Я просто знімаю файл і створюю посилання на бінарний файл, який я хочу, переконуючись, що символьне посилання знаходиться десь у моїй PATH. Зазвичай це робиться шляхом додавання до мого шляху чогось "локального", наприклад ~ / bin / або чогось іншого.
см2

Так, це було б набагато розумніше. Процедура його установки - чудернацькі горіхи, і я повинен був просто вважати це за те, щоб замінити його сліпо.
Боб Аман

3

Якщо хтось дивиться на цю стару нитку, здається, що домашня мова / версії, використані в прийнятій відповіді, були застарілими на користь домівки / core . Просто біжи brew install <formula>.


Чи можете ви пояснити, як це пов'язано з питанням ОП, як встановити GCC через Homebrew?
fsb

@fsb Відповідь оновлено.
Аві

Це більше коментар до прийнятої відповіді. Це не повинно бути самою відповіддю, оскільки це не стосується питання щодо ОП. Коли у вас буде достатня репутація, ви зможете додавати коментарі та задавати подальші запитання. Щоб здобути репутацію, відповідайте на питання, чіткі та стислі .
fsb

Чи слід задати нове запитання, щоб вказати версію заварки, де це змінюється? Виправлення цієї старої публікації здається низькою користю, великою затримкою.
bmike

Якби у мене було достатньо балів репутації, я б натомість прокоментував прийняте рішення. Не соромтеся робити це самостійно.
Аві

0

Ви можете спробувати це - https://github.com/kennethreitz/osx-gcc-installer - я успішно використовував це після переходу на Lion для складання пакетів з Homebrew та іншими (Ruby).

З прочитаного:

OSX GCC Installer Завантаження та встановлення масового інсталятора Xcode - це величезна проблема, якщо ви просто хочете GCC та пов'язані з ними інструменти.

Osx-gcc-installer дозволяє встановлювати необхідні компілятори з попередньо вбудованих бінарних пакетів або допомагає створити власний інсталятор.


Це встановлює лише версії, встановлені також Xcode. Іншими словами: застарілий, а насправді не GCC, а LLVM-GCC.
Конрад Рудольф

1
Застарілий: Так. Суть пакету полягає в тому, що утиліти, що постачаються Xcode, але без усіх інших величезних компонентів, необхідних для Xcode. Не GNU GCC: Неправильно. /usr/bin/gccє символьним посиланням на llvm gcc, але явна посилання на /usr/bin/gcc-4.2або налаштування export CC="gcc-4.2"у вашому .bash_profile або відповідному файлі також пом'якшує проблему. (Дивіться також це запитання про переповнення стека .)
Джейсон Салаз

2
Зауважте, що цей проект замінено офіційними інструментами командного рядка Apple для Xcode: kennethreitz.org/essays/xcode-gcc-and-homebrew
Arto Bendiken
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.