我最近对Xcode 5中包含的新clang编译器感到沮丧。我想知道在OS X上安装GNU GCC的最佳方法是什么。
需要考虑的事项:
configure
调用CC=clang CXX=clang++
,以便GCC知道它不是由GCC编译的。make
调用-j8
,否则构建大约需要4个小时! (使用-j8
,我的2012年中期MBP需要1 1/3小时,内存为8 GB。)(make -j8
表示make
可以同时构建8个线程(4核+ HT),而在2核机器上,您可以运行make -j4
。)希望这有帮助!
答案 0 :(得分:6)
我这样做的方式是:
下载GCC的来源和众多支持包。这些说明位于GCC源代码中的gcc-4.x.y/INSTALL/index.html
文件中,或位于http://gcc.gnu.org/install/的在线文件中。
使用脚本将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
中指定的名称)添加到您的PATH。
使用具有5400 rpm旋转磁盘的MacBook Pro,编译所有内容需要一两个小时(使用-j8
选项make
),并且在编译时需要多个GB的磁盘空间。执行此操作时SSD非常好(绝对更快)!
GCC 4.9.0于2014-04-22发布。我使用基本相同的过程安装它,但使用CLooG 0.18.1和ISL 0.12.2(必需更新)和GMP 5.1.3(和6.0.0a),MPC 1.0.2(或1.0.1) Mac OS X 10.9.2 Mavericks和Ubuntu 12.04衍生版本的MPFR 3.1.2和MPFR 3.1.2。请注意gmp-6.0.0a.tar.xz
提取到目录gmp-6.0.0
(而非gmp-6.0.0a
,如您所料。)
2014年至2017年9月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,对于macOS Sierra(10.12)上的GCC 7.2.0,下面显示的构建脚本只有很小的变化。辅助库的版本经常发生变化。
在2017-08-14,我使用上面脚本的一个小变体在macOS Sierra 10.12上构建GCC 7.2.0(使用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 $1"
$TAR -xf $1
}
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,我无法使用与Sierra 10.12相同的脚本在macOS High Sierra 10.13(使用XCode 9作为bootstrap编译器)上构建GCC 7.2.0。立即错误是缺少标题<stack>
;我需要追踪我的XCode 9安装是否正确 - 或者更准确地说,为什么它不正确,因为<stack>
是standard header in C++98以后。这可能很容易解决;我还没有花时间追逐它。 (是的,我已经多次运行xcode-select --install
;由于网络故障我必须多次运行它可能是麻烦的一部分。)(我得到了GCC 7.2.0到在2017-12-02成功编译;我不记得需要什么样的体操 - 如果有的话 - 才能让它发挥作用。)
时间流逝;版本号增加。但是,基本配方对我来说是最新版本的GCC。我有7.3.0(安装2018-01-2),8.1.0(安装2018-05-02),8.2.0(安装2018-07-26),8.3.0(安装2019-03-01)和现在9.1.0(今天安装,2019-05-03)。这些版本中的每一个都是在当前版本的macOS上构建和安装的,使用当前版本的XCode进行自举阶段(因此在构建GCC 9.1.0时使用macOS 10.14.4 Mojave和XCode 10.2.1)
答案 1 :(得分:3)
专门为OS X 10.9.x Mavericks使用预编译的二进制文件:
使用GNU服务器的源代码编译。
这包含gfortran的当前版本(4.7是稳定版本) (免费,开源,GNU Fortran 95编译器),gcc(GNU C)和g ++(GNU C ++)可以执行自动矢量化的编译器(即修改代码 利用AltiVec / SSE,自动)和其他 像OpenMP这样的复杂优化。有关更多信息,请参阅 this webpage。
将我的二进制文件下载, cd 下载到下载文件夹。然后 gunzip gcc-4.9-bin.tar.gz (如果你的浏览器还没有这样做的话)然后 sudo tar -xvf gcc-4.9-bin.tar -C / 。它安装了所有内容 的的/ usr /本地即可。只需键入即可调用Fortran 95编译器 的 gfortran 即可。您还需要安装Apple的XCode Tools 来自Mac App Store。使用XCode 4或5,您需要下载 命令行工具作为附加步骤。你会找到这个选项 在XCode的首选项中下载命令行工具。
在10.9 Mavericks 上,只需输入即可获得命令行工具 xcode-select --install 。
答案 2 :(得分:3)
Homebrew现在有了GCC包,所以你可以用这个命令安装它:
brew install gcc