gpt4 book ai didi

macos - 在 mac 上安装 GNU GCC

转载 作者:行者123 更新时间:2023-12-04 03:38:07 25 4
gpt4 key购买 nike

我最近对 ​​Xcode 5 中包含的新 clang 编译器感到沮丧。我想知道在 OS X 上安装 GNU GCC 的最佳方法是什么。

需要考虑的事项:

  • 我不想使用 MacPorts、fink、homebrew 或任何其他第三方包管理器。
  • 如果可能,我想使用从源代码编译的最新 GCC。
  • 我需要现有的 GCC(到 clang 的硬链接(hard link))保持默认,但在需要时可以轻松使用 GNU GCC。
  • 如果可能的话,我想避免修改代码。

  • 编辑:成功!使用 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 和 CLoG。是的,它们是可选的,但它们会生成一个更优化的编译器,没有它们我很难构建。确保您使用的是 ISL 0.12,而不是最新版本 (0.14)。
  • 如果可能,请使用独立的开发人员工具,而不是 XCode。 (XCode 有一些错误的 header ,虽然我没有注意到构建 GCC 的任何问题,但我在其他软件(例如 GPG)方面遇到了问题)。
  • 我建议将所有源代码放在 gcc 目录中,而不是单独构建和安装(这样更快)
  • 确保调用 configureCC=clang CXX=clang++所以 GCC 知道它不是由 GCC 编译的。
  • 绝对,绝对,绝对,调用 make-j8 ,否则构建将需要大约 4 个小时! (使用 -j8 ,在我的 2012 年中期 MBP 上使用 8gb RAM 需要 1 1/3 小时。)(make -j8 表示 make 可以同时构建 8 个线程(4 核 + HT),而在 2 核上您将运行的机器make -j4。)

  • 希望这可以帮助!

    最佳答案

    我这样做的方式是:

  • 下载 GCC 的源代码和众多支持包。说明在 gcc-4.x.y/INSTALL/index.html GCC 源代码中的文件,或在线 http://gcc.gnu.org/install/ .
  • GNU 多精度库 (GMP) 版本 4.3.2(或更高版本)来自 http://gmplib.org/ .
  • MPFR 库版本 2.4.2(或更高版本)来自 http://www.mpfr.org/ .
  • 来自 http://www.multiprecision.org/ 的 MPC 库版本 0.8.1(或更高版本) .
  • 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 之前到您的 PATH .

    使用具有 5400 rpm 旋转磁盘的体面 MacBook Pro,编译所有内容需要一两个小时(使用 -j8make 选项),并且在编译时需要数 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)和 MPFR Mac OS X 10.9.2 Mavericks 和 Ubuntu 12.04 衍生版本上的 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 的构建脚本只有微小的变化。辅助库的版本经常更改。

    macOS Sierra 和 High Sierra

    在 2017 年 8 月 14 日,我使用上述脚本的一个小变体在 macOS Sierra 10.12 上构建 GCC 7.2.0(使用 XCode 8 作为引导编译器)。一个变化是似乎不再需要 CLoG(我停止在 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 ),但由于 tar 的标准 Mac 版本这样做对我来说,它可能对你也有用。

    在 2017 年 9 月 27 日,我未能使用与 Sierra 10.12 上相同的脚本在 macOS High Sierra 10.13(使用 XCode 9 作为引导编译器)上构建 GCC 7.2.0。直接错误是缺少标题 <stack> ;我需要追踪我的 XCode 9 安装是否正确——或者更准确地说,为什么它不正确,因为 <stack>standard header in C++98向前。可能有一个简单的解决方法;我只是还没有花时间去追它。 (是的,我已经运行了 xcode-select --install 多次;由于网络故障,我不得不多次运行它的事实可能是问题的一部分。)(我在 2017 年 12 月成功编译了 GCC 7.2.0- 02;我不记得需要什么体操(如果有的话)才能让它发挥作用。)

    时间流逝;版本号增加。但是,基本配方对我来说适用于更新版本的 GCC。我有 7.3.0(2018 年 1 月 2 日安装)、8.1.0(2018 年 5 月 2 日安装)、8.2.0(2018 年 7 月 26 日安装)、8.3.0(2019 年 3 月 1 日安装)和现在 9.1.0(今天安装,2019-05-03)。这些版本中的每一个都是在当时的当前版本的 macOS 上构建和安装的,在引导阶段使用当前版本的 XCode(因此在构建 GCC 9.1.0 时使用 macOS 10.14.4 Mojave 和 XCode 10.2.1)

    关于macos - 在 mac 上安装 GNU GCC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21173518/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com