Установить GNU GCC на mac

недавно я разочаровался в новом компиляторе clang, включенном в Xcode 5. Мне было интересно, как лучше всего установить GNU GCC на OS X.

вещи для рассмотрения:

  • Я не хочу использовать MacPorts, fink, homebrew или любой другой сторонний менеджер пакетов.
  • Я хотел бы использовать последний GCC, скомпилированный из источника, если это возможно.
  • мне нужно, чтобы существующий GCC (hardlink to clang) оставался по умолчанию, но чтобы легко использовать GNU GCC, когда мне нужно.
  • Я хотел бы избежать изменения кода, если это вообще возможно.

EDIT: успех! Используя GCC 4.9.2 (с GMP 5.1.3, MPFR 3.1.2, MPC 1.0.2, ISL 0.12.2 и CLooG 0.18.1), я успешно построил GCC. Советы, чтобы взять отсюда:

  • убедитесь, что вы используете ISL и CLooG. Да, они необязательны, но они делают более оптимизированный компилятор, и мне было трудно строить без них. Убедитесь, что вы используете ISL 0.12, не последней версии (0.14).
  • если возможно, используйте автономные инструменты разработчика,не в Xcode. (У XCode есть некоторые багги-заголовки, и, хотя я не заметил никаких проблем с созданием GCC, у меня были проблемы с другим программным обеспечением (например, GPG)).
  • я рекомендую поместить все ваши источники в каталог gcc, а не строить и устанавливать отдельно (это быстрее таким образом)
  • убедится вызов configure с CC=clang CXX=clang++ поэтому GCC знает, что он не компилируется GCC.
  • определенно, определенно, определенно, invoke make С -j8, или в противном случае сборка займет около 4 часов! (С -j8, это заняло 1 1/3 часа на моем Mid-2012 MBP с 8GB RAM.) (make -j8 означает make смогите построить 8 потоков одновременно (4 ядра + ХТ), тогда как на машине 2 ядер вы побежали бы make -j4.)

надеюсь, что это помогает!

3 ответов


то, как я это делаю:

  1. загрузите источник для GCC и многочисленных пакетов поддержки. Инструкции находятся в в исходном коде Оук, или на сайте http://gcc.gnu.org/install/.

  2. используйте скрипт для извлечения источника для GCC и библиотек поддержки в каталог, создайте каталог объектов и запустите сборку.

это скрипт, который я использовал для GCC 4.8.2:

GCC_VER=gcc-4.8.2
tar -xf ${GCC_VER}.tar.bz2 || exit 1

(
cd ${GCC_VER} || exit

cat <<EOF |
    cloog 0.18.0 tar.gz 
    gmp 5.1.3 tar.xz 
    isl 0.11.1 tar.bz2 
    mpc 1.0.1 tar.gz 
    mpfr 3.1.2 tar.xz
EOF

while read file vrsn extn
do
    (
    set -x
    tar -xf "../$file-$vrsn.$extn" &&
    ln -s "$file-$vrsn" "$file"
    )
done
)

mkdir ${GCC_VER}-obj
cd ${GCC_VER}-obj
../${GCC_VER}/configure --prefix=$HOME/gcc/gcc-4.8.2
make -j8 bootstrap

когда это закончится, запустите установку тоже. Затем добавьте $HOME/gcc/gcc-4.8.2/bin (имя, указанное в --prefix плюс /bin) на ваш путь впереди /usr/bin.

с приличным MacBook Pro с вращающимся диском 5400 об / мин требуется час или два, чтобы скомпилировать все (используя до make), и требует нескольких гигабайт дискового пространства во время компиляции. SSD хорош при этом (определенно быстрее)!


GCC 4.9.0 был выпущен 2014-04-22. Я установил его, используя в основном тот же процесс, но с CLooG 0.18.1 и ISL 0.12.2 (необходимые обновления) и GMP 5.1.3 (и 6.0.0 a), MPC 1.0.2 (или 1.0.1) и MPFR 3.1.2 на Mac OS X 10.9.2 Mavericks и производной Ubuntu 12.04. Остерегайтесь, что gmp-6.0.0a.tar.xz экстракты в каталоге gmp-6.0.0 (не gmp-6.0.0a как вы могли ожидать.)


между 2014 и 2017-09-27, я построил версии GCC 4.9.0, 4.9.1, 5.1.0, 5.2.0, 5.3.0, 6.1.0, 6.2.0, 6.3.0, 7.1.0 с незначительными изменениями в сценарии сборки, показанном ниже для GCC 7.2.0 на macOS Sierra (10.12). Версии вспомогательных библиотек менялись достаточно часто.


macOS Сьерра и высокая Сьерра

на 2017-08-14 я использовал незначительный вариант сценария выше, чтобы построить GCC 7.2.0 на macOS Sierra 10.12 (использование Xcode 8 в качестве компилятора начальной загрузки). Одно из изменений заключается в том, что CLooG, похоже, больше не нужен (я перестал добавлять его с GCC 6.2.0). Это мой текущий скрипт:

#!/bin/bash

#export DYLD_LIBRARY_PATH=$(clnpath $(dirname $(dirname $(which g++)))/lib:$DYLD_LIBRARY_PATH)
unset DYLD_LIBRARY_PATH

TAR=/opt/gnu/bin/tar
VER_NUM=7.2.0
GCC_VER=gcc-${VER_NUM}
TGT_BASE=/opt/gcc
TGT_DIR=${TGT_BASE}/v${VER_NUM}
CC=/usr/bin/clang
CXX=/usr/bin/clang++

extract() {
    echo "Extract "
    $TAR -xf 
}

if [ ! -d "$GCC_VER" ]
then extract ${GCC_VER}.tar.xz || exit 1
fi

(
cd ${GCC_VER} || exit

nbncl <<EOF |
    gmp     6.1.2   tar.lz 
    isl     0.16.1  tar.bz2 
    mpc     1.0.3   tar.gz 
    mpfr    3.1.5   tar.xz
EOF

while read file vrsn extn
do
    tarfile="../$file-$vrsn.$extn"
    if [ ! -f "$tarfile" ]
    then echo "Cannot find $tarfile" >&2; exit 1;
    fi
    if [ ! -d "$file-$vrsn" ]
    then
        (
        set -x
        extract "$tarfile" &&
        ln -s "$file-$vrsn" "$file"
        ) || exit 1
    fi
done
)

if [ $? = 0 ]
then
    mkdir ${GCC_VER}-obj
    cd ${GCC_VER}-obj
    ../${GCC_VER}/configure --prefix="${TGT_DIR}" \
        CC="${CC}" \
        CXX="${CXX}"
    make -j8 bootstrap
fi

убедитесь, что ваша версия tar поддерживает все 4 различных формата сжатых файлов (.lz, .gz, .xz, .bz2), но так как стандартная версия Mac tar делает это для меня, это, вероятно, будет работать и для вас.

на 2017-09-27, я не смог построить GCC 7.2.0 на macOS High Sierra 10.13 (используя Xcode 9 для компилятора начальной загрузки), используя тот же скрипт, что и в Sierra 10.12. Непосредственной ошибкой был отсутствующий заголовок <stack>; мне нужно будет отслеживать, является ли моя установка XCode 9 правильной - или, точнее, почему это не правильно, так как <stack> это стандартный заголовок В C++98 далее. Вероятно, есть простое решение; я просто еще не потратил время на его поиски. (Да, я бежал xcode-select --install несколько раз; тот факт, что мне пришлось бежать он несколько раз из-за сетевых сбоев может быть частью проблемы.)


используйте предварительно скомпилированный двоичный файл специально для OS X 10.9.x Mavericks:

gcc-4.9

скомпилирован с использованием исходного кода с серверов GNU.

Это содержит текущие версии (4.7 является стабильным выпуском) gfortran (свободный, с открытым исходным кодом, компилятор GNU Fortran 95), gcc (GNU C) и g++ (GNU C++) компиляторы, которые могут выполнять авто-векторизацию (т. е. изменять код чтобы воспользоваться AltiVec/SSE, автоматически) и другие сложные оптимизации, такие как OpenMP. Дополнительные сведения см. В разделе этот сайт.

загрузите мои двоичные файлы и компакт-диск до скачать папку. Тогда gunzip gcc-4.9-bin.смола.gz (если Ваш браузер еще не сделал этого), а затем sudo tar-xvf gcc-4.9-bin.tar-C /. Он устанавливает все в / usr / local. Вы можете вызвать компилятор Fortran 95, просто введя gfortran. Вам также потребуется установить инструменты Xcode от Apple из Mac App Store. С XCode 4 или 5 вам нужно будет скачать инструменты командной строки в качестве дополнительного шага. Вы найдете вариант чтобы загрузить инструменты командной строки в настройках XCode.

На 10.9 Mavericks, вы можете получить инструменты командной строки, просто набрав xcode-выберите --install.


Homebrew теперь имеет пакет GCC, поэтому вы можете установить его с помощью этой команды:

brew install gcc