我最近对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
。
- 一定,一定,一定 *,使用
希望这对你有帮助!
4条答案
按热度按时间polhcujo1#
Homebrew现在有GCC包,所以你可以用这个命令安装它:
字符串
7y4bm7vi2#
我的做法是:
gcc-4.x.y/INSTALL/index.html
文件中,或在线http://gcc.gnu.org/install/。这是我在GCC 4.8.2中使用的脚本:
字符串
完成安装后,运行安装程序,然后将
$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中停止添加它)。这是我当前的脚本:
型
确保您的
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)
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即可获取命令行工具。
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
上成功工作如果你使用自制软件安装了
make
和cmake
,你需要将bin路径添加到PATH
变量中。例如,下面我们将gnubin路径添加到fish shell中的PATH
。set -U fish_user_paths /opt/homebrew/opt/make/libexec/gnubin $fish_user_paths
个