在Mac上安装GNU GCC

t1qtbnec  于 2024-01-08  发布在  Mac
关注(0)|答案(4)|浏览(194)

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

  • 我不想使用MacPorts,fink,homebrew或任何其他第三方软件包管理器。
  • 如果可能的话,我想使用最新的GCC,从源代码编译。
  • 我需要现有的GCC(硬链接到clang)保持默认,但在需要时可以轻松使用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和CLooG。是的,它们是可选的,但它们可以使编译器更优化,没有它们我在编译时遇到了麻烦。确保使用ISL 0.12,* 而不是 * 最新版本(0.14)。
  • 如果可能的话,使用独立的开发者工具,* 而不是 * XCode。(XCode有一些错误的头文件,虽然我没有注意到构建GCC的任何问题,但我在使用其他软件(例如GPG)时遇到了问题)。
  • 我建议把你所有的源码放在gcc目录下,而不是单独构建和安装(这样更快)
    • 请确保 * 您使用CC=clang CXX=clang++调用configure,以便GCC知道它没有被GCC编译。
    • 一定,一定,一定 *,使用-j8调用make,否则构建将花费大约4个小时!(使用-j8,我在2012年中期的MBP上花了1个半小时,内存为8 GB。(make -j8意味着make可以同时构建8个线程(4核+ HT),而在2核机器上,您将运行make -j4

希望这对你有帮助!

polhcujo

polhcujo1#

Homebrew现在有GCC包,所以你可以用这个命令安装它:

  1. brew install gcc

字符串

7y4bm7vi

7y4bm7vi2#

我的做法是:

这是我在GCC 4.8.2中使用的脚本:

  1. GCC_VER=gcc-4.8.2
  2. tar -xf ${GCC_VER}.tar.bz2 || exit 1
  3. (
  4. cd ${GCC_VER} || exit
  5. cat <<EOF |
  6. cloog 0.18.0 tar.gz
  7. gmp 5.1.3 tar.xz
  8. isl 0.11.1 tar.bz2
  9. mpc 1.0.1 tar.gz
  10. mpfr 3.1.2 tar.xz
  11. EOF
  12. while read file vrsn extn
  13. do
  14. (
  15. set -x
  16. tar -xf "../$file-$vrsn.$extn" &&
  17. ln -s "$file-$vrsn" "$file"
  18. )
  19. done
  20. )
  21. mkdir ${GCC_VER}-obj
  22. cd ${GCC_VER}-obj
  23. ../${GCC_VER}/configure --prefix=$HOME/gcc/gcc-4.8.2
  24. 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)和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年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,在macOS Sierra上,GCC 7.2.0的构建脚本中只有微小的变化(10.12).辅助图书馆的版本变化相当频繁。

macOS Sierra和High Sierra

在2017-08-14,我使用上面脚本的一个小变体在macOS Sierra 10.12上构建了GCC 7.2.0(使用XCode 8作为引导编译器)。一个变化是CLooG似乎不再需要了(我在GCC 6.2.0中停止添加它)。这是我当前的脚本:

  1. #!/bin/bash
  2. #export DYLD_LIBRARY_PATH=$(clnpath $(dirname $(dirname $(which g++)))/lib:$DYLD_LIBRARY_PATH)
  3. unset DYLD_LIBRARY_PATH
  4. TAR=/opt/gnu/bin/tar
  5. VER_NUM=7.2.0
  6. GCC_VER=gcc-${VER_NUM}
  7. TGT_BASE=/opt/gcc
  8. TGT_DIR=${TGT_BASE}/v${VER_NUM}
  9. CC=/usr/bin/clang
  10. CXX=/usr/bin/clang++
  11. extract() {
  12. echo "Extract $1"
  13. $TAR -xf $1
  14. }
  15. if [ ! -d "$GCC_VER" ]
  16. then extract ${GCC_VER}.tar.xz || exit 1
  17. fi
  18. (
  19. cd ${GCC_VER} || exit
  20. nbncl <<EOF |
  21. gmp 6.1.2 tar.lz
  22. isl 0.16.1 tar.bz2
  23. mpc 1.0.3 tar.gz
  24. mpfr 3.1.5 tar.xz
  25. EOF
  26. while read file vrsn extn
  27. do
  28. tarfile="../$file-$vrsn.$extn"
  29. if [ ! -f "$tarfile" ]
  30. then echo "Cannot find $tarfile" >&2; exit 1;
  31. fi
  32. if [ ! -d "$file-$vrsn" ]
  33. then
  34. (
  35. set -x
  36. extract "$tarfile" &&
  37. ln -s "$file-$vrsn" "$file"
  38. ) || exit 1
  39. fi
  40. done
  41. )
  42. if [ $? = 0 ]
  43. then
  44. mkdir ${GCC_VER}-obj
  45. cd ${GCC_VER}-obj
  46. ../${GCC_VER}/configure --prefix="${TGT_DIR}" \
  47. CC="${CC}" \
  48. CXX="${CXX}"
  49. make -j8 bootstrap
  50. fi


确保您的tar版本支持所有4种不同的压缩文件格式(.lz.gz.xz.bz2),但由于标准Mac版本的tar为我做了这一点,它可能也适合您。
在2017-09-27,我未能在macOS High Sierra 10.13上构建GCC 7.2.0(使用XCode 9作为引导编译器)使用与Sierra 10.12相同的脚本。立即错误是缺少头<stack>;我需要跟踪我的XCode 9安装是否正确-或者更准确地说,为什么它不正确,因为<stack>是C++98以后的标准头文件。可能有一个简单的修复方法;我只是还没有花时间去研究它。(是的,我已经多次运行xcode-select --install;由于网络故障,我不得不多次运行它,这可能是问题的一部分。(我在2017-12-02成功编译了GCC 7.2.0;我不记得需要什么体操-如果有的话-让它工作。
时间流逝;版本号增加了。但是,基本的配方对我来说在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莫哈韦和XCode 10.2.1)

展开查看全部
mwkjh3gx

mwkjh3gx3#

使用专为OS X 10.9.x Mavericks预编译的二进制文件:
gcc-4.9
使用GNU服务器的源代码编译。
这包含gfortran(免费、开源、GNU Fortran 95编译器)、gcc(GNU C)和g++(GNU C++)编译器的当前版本(4.7是稳定版本),这些编译器可以执行自动向量化(即自动修改代码以利用AltiVec/SSE)和其他复杂的优化,如OpenMP。有关详细信息,请参阅this webpage
下载我的二进制文件,下载文件夹**,然后gunzip gcc-4.9-bin.tar.gz(如果您的浏览器还没有这样做),然后输入sudo tar-xvf gcc-4.9-bin. tar-C/。它将安装**/usr/local中的所有内容。您只需输入gfortran**即可调用Fortran 95编译器.您还需要从Mac App Store安装Apple的XCode Tools。使用XCode 4或5,您需要下载命令行工具作为附加步骤。您可以在XCode的首选项中找到下载命令行工具的选项。

在10.9 Mavericks上,只需输入xcode-select --install即可获取命令行工具。

cu6pst1q

cu6pst1q4#

Homebrew现在有GCC包,所以你可以用这个命令安装它:
第一个月
不要使用Xcode的Clang的gcc,否则它会不断要求安装命令行开发工具。
为了让你的make文件选择合适的自制gcc,只需使用符号链接为你的make文件找到合适的gcc。
sudo ln -sf /opt/homebrew/bin/gcc-13 /usr/local/bin/x86_64-linux-gnu-gcc
sudo ln -sf /opt/homebrew/bin/gcc-13 /usr/local/bin/aarch64-linux-gnu-gcc
视情况而定。
Sonoma 14.1.2上成功工作
如果你使用自制软件安装了makecmake,你需要将bin路径添加到PATH变量中。例如,下面我们将gnubin路径添加到fish shell中的PATH
set -U fish_user_paths /opt/homebrew/opt/make/libexec/gnubin $fish_user_paths

相关问题