Установить 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 ответов
то, как я это делаю:
-
загрузите источник для GCC и многочисленных пакетов поддержки. Инструкции находятся в в исходном коде Оук, или на сайте http://gcc.gnu.org/install/.
- GNU Multiple Precision Library (GMP) версии 4.3.2 (или более поздней) из http://gmplib.org/.
- библиотека MPFR версии 2.4.2 (или более поздней) из http://www.mpfr.org/.
- библиотека MPC версии 0.8.1 (или более поздней) из http://www.multiprecision.org/.
- библиотека ISL версии 0.11.1 от ftp://gcc.gnu.org/pub/gcc/infrastructure/.
- CLooG 0.18.0 от ftp://gcc.gnu.org/pub/gcc/infrastructure/.
используйте скрипт для извлечения источника для 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