首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在mac上安装GNU GCC

在mac上安装GNU GCC
EN

Stack Overflow用户
提问于 2014-01-16 21:43:04
回答 3查看 35.9K关注 0票数 12

最近我对Xcode 5中包含的新的clang编译器感到失望,我想知道在OS上安装GNU GCC的最好方法是什么。

需要考虑的事项:

  • 我不想使用MacPorts,fink,自制或任何其他第三方软件包管理器。
  • 我想使用最新的GCC,从来源汇编,如果可能的话。
  • 我需要现有的GCC (硬链接到clang)来保持默认状态,但是在我需要的时候可以很容易地使用GNU GCC。
  • 如果可能的话,我想避免修改代码。

编辑:成功!用GCC 4.9.2 (用GMP5.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编写的。
  • 当然,肯定地,肯定地,用-j8调用-j8,否则构建将需要大约4个小时!(使用-j8,在我的Mid-2012 MBP上使用8gb内存需要一个半小时。) (make -j8意味着make可以同时构建8个线程(4个内核+ HT),而在一个2核机器上运行make -j4。)

希望这能有所帮助!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-01-19 06:06:28

我的做法是:

  1. 下载GCC的源代码和众多的支持包。说明在gcc-4.x.y/INSTALL/index.html文件中的GCC源代码,或在线在http://gcc.gnu.org/install/
代码语言:javascript
复制
- GNU Multiple Precision Library (GMP) version 4.3.2 (or later) from [http://gmplib.org/](http://gmplib.org/).
- MPFR Library version 2.4.2 (or later) from [http://www.mpfr.org/](http://www.mpfr.org/).
- MPC Library version 0.8.1 (or later) from [http://www.multiprecision.org/](http://www.multiprecision.org/).
- ISL Library version 0.11.1 from [ftp://gcc.gnu.org/pub/gcc/infrastructure/](ftp://gcc.gnu.org/pub/gcc/infrastructure/).
- CLooG 0.18.0 from [ftp://gcc.gnu.org/pub/gcc/infrastructure/](ftp://gcc.gnu.org/pub/gcc/infrastructure/).

  1. 使用脚本将GCC的源代码和支持库提取到目录中,创建对象目录并运行构建。

这是GCC 4.8.2的剧本:

代码语言:javascript
复制
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前面的路径中。

使用一个具有5400 rpm旋转磁盘的体面的MacBook Pro,编译所有内容需要一两个小时(使用-j8选项到make),编译时需要多个千兆字节的磁盘空间。SSD是很好的,当这样做(绝对更快)!

GCC 4.9.0于2014-04-22发行.我在Mac 10.9.2小牛和Ubuntu12.04衍生产品上安装了CLooG 0.18.1和ISL0.12.2(必需更新)和GMP5.1.3(和6.0.0a)、MPC 1.0.2 (或1.0.1)和MPFR3.1.2。请注意,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,只在macOS Sierra上GCC 7.2.0的构建脚本中有了一些细微的变化(10.12)。辅助库的版本经常发生变化。

macOS塞拉利昂和高塞拉

在2017-08-14,我使用上面脚本的一个小变体在macOS Sierra10.12上构建GCC 7.2.0 (使用XCode 8作为引导编译器)。一个改变是,CLooG似乎不再需要了(我不再用GCC 6.2.0添加它)。这是我现在的剧本:

代码语言:javascript
复制
#!/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),但是由于标准的tar版本对我来说是这样的,所以它可能也适用于您。

在2017至09-27年间,我未能使用与macOS 10.12相同的脚本在XCode HighSiera10.13(引导编译器使用XCode 9)上构建GCC 7.2.0。当前的错误是缺少了头<stack>;我需要跟踪我的XCode 9安装是否正确,或者更准确地说,为什么它是不正确的,因为<stack>是一个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 )

票数 6
EN

Stack Overflow用户

发布于 2017-02-23 02:46:42

Homebrew现在有GCC软件包,所以您可以使用以下命令来安装它:

代码语言:javascript
复制
brew install gcc
票数 9
EN

Stack Overflow用户

发布于 2014-01-19 06:04:34

为OS 10.9.x小牛使用预编译的二进制文件:

gcc-4.9

使用GNU服务器的源代码编译。

它包含当前版本(4.7是稳定版本)的gfortran (免费,开放源码,GNU Fortran 95编译器),gcc (GNU C)和g++ (GNU C++)编译器,可以执行自动矢量化(即修改代码,以利用AltiVec/SSE,自动)和其他复杂的优化,如OpenMP。有关更多信息,请参见本网页。 下载我的二进制文件,cd下载文件夹。然后是gunzip gcc-4.9-bin.tar.gz (如果你的浏览器还没有这么做)和sudo tar -xvf gcc-4.9-bin.tar -C /。它在/usr/local中安装所有东西。只需键入gfortran即可调用Fortran 95编译器。你还需要从Mac安装苹果的XCode工具。使用XCode 4或5,您需要下载命令行工具,这是一个额外的步骤。您将在XCode的首选项中找到下载命令行工具的选项。 On 10.9小牛,只需键入xcode-select --安装即可获得命令行工具。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21173518

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档