macOS环境gcc配置

macOS默认C++编译工具为clang,下文将具体描述如何将编译工具改为gcc7.4.0。(截至目前,笔者已更新至gcc8.3.0)

安装gcc7

 
若读者已安装有homebrew,则可直接于终端输入:

1
brew install gcc7@

下载完毕后gcc将位于usr/local/Cellar/gcc@7/7.4.0/,此时可将gcc@7文件夹重命名为gcc
若读者尚未安装homebrew,可通过
1
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

完成对homebrew的安装。

配置gcc7

 
在gcc下载完成后,需要完成环境变量配置。笔者以当前使用的zsh为例,shell为bash的用户将命令行中的.zshrc改为.bashrc即可。

添加path

 
在终端中输入

1
vim ~/.zshrc

并于其中添加
1
export PATH="/usr/local/Cellar/gcc/7.4.0/bin:$PATH"

此时path添加完毕。

添加别名

 
在完成path添加后,只有在以g++-7gcc-7时才使用gcc7.4.0,出于便捷的考虑,可于.zshrc内添加alias如下:

1
2
alias g++='g++-7'
alias gcc='gcc-7'

完成添加后于终端输入
1
source ~/.zshrc

至此环境配置完毕,于终端输入gcc -v后,有输出如下所示:
1
gcc version 7.4.0 (Homebrew GCC 7.4.0)

更新动态库

 
更进一步地,我们需要对动态库执行更新,在终端输入

1
find / -name "libstdc++*.dylib"

可发现新动态库位置为
1
2
/usr/local/Cellar/gcc/7.4.0/lib/gcc/7/libstdc++.6.dylib
/usr/local/Cellar/gcc/7.4.0/lib/gcc/7/libstdc++.dylib

此时可将其复制入/usr/local/lib下,切记不可关闭SIP后替换原本位于/usr/lib下的旧动态库,此操作将导致SIP再次开启后无法进入系统。
1
2
3
cd /usr/local/lib
cp /usr/local/Cellar/gcc/7.4.0/lib/gcc/7/libstdc++.6.dylib ./
ln -s libstdc++.6.dylib libstdc++.lib