GCC: Homebrew 安装 GCC 和 Binutils

文章背景

前段时间,有个博客上面的小伙伴给我发来邮件,问我关于 GCC 相关的知识,对于 GCC 我也只是凭着之前的了解,回复他了。书到用时方恨少呀!

这位小伙伴还在读大学,自学能力比较强,自己出了完成课时之外,还会在网上找资料自学。

我记得自己在大学的时候,对 GCC 一窍不通,只知道 Turbo-C 和那些被强制记住的关键字。

最后告诉他, 我会坚持把自己以前学习过相关 GCC 的知识,以博客的形式输出。于是。就有了 GCC 系列 的文章,希望能够帮到大家。

概要

这篇博客主要分享 MacOS 下安装 GCC 和 Binutils 工具。

MacOS 下输入 gcc -v, 其实是链接指向了 LLVM 编译器, 不是 GNU 的 GCC.

1
2
3
4
5
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/include/c++/4.2.1
Apple LLVM version 9.0.0 (clang-900.0.37)
Target: x86_64-apple-darwin16.7.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

安装 GCC

关于 GCC, 可以参考 维基百科.

执行下面命令, 即可开始安装:

1
2
3
brew tap homebrew/versions
brew install gcc49

brew 会自动为你安装相关依赖,如 gmp4、mpfr2、libmpc08、isl011、cloog018.

这里安装需要等待一段时间…

看到下面的内容, 表示安装完毕.

1
2
3
Pouring gcc49-4.9.2_1.yosemite.bottle.1.tar.gz
/usr/local/Cellar/gcc49/4.9.2_1: 1138 files, 164M

安装成功后, 安装目录在:

1
/usr/local/Cellar/gcc49/4.9.2_1

你在终端直接输入 gcc -v,其实还是 LLVM,那么如何使用我们 刚安装的 gcc?

1
2
3
cd /usr/local/Cellar/gcc49/4.9.2_1/bin
ls -l

可以看到:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
c++-4.9
cpp-4.9
g++-4.9
gcc-4.9
gcc-ar-4.9
gcc-nm-4.9
gcc-ranlib-4.9
gcov-4.9
x86_64-apple-darwin14.3.0-c++-4.9
x86_64-apple-darwin14.3.0-g++-4.9
x86_64-apple-darwin14.3.0-gcc-4.9
x86_64-apple-darwin14.3.0-gcc-4.9.2
x86_64-apple-darwin14.3.0-gcc-ar-4.9
x86_64-apple-darwin14.3.0-gcc-nm-4.9
x86_64-apple-darwin14.3.0-gcc-ranlib-4.9

Ok,你应该明白了, 在命令行输入 gcc-4.9 -v 就可以使用我们刚安装的 GCC 了,包括 g++ 等工具.

以后使用 GNU 的 GCC 输入 gcc-4.9 就好了。

安装 Binutils

关于 Binutils 可以参考 维基百科.

执行下面命令, 直接安装:

1
brew install binutils

同理:

1
cd /usr/local/Cellar/binutils/2.25/bin

可以看到你需要的工具:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
gaddr2line
gar
gc++filt
gcoffdump
gdlltool
gdllwrap
gelfedit
gnlmconv
gnm
gobjcopy
gobjdump
granlib
greadelf
gsize
gsrconv
gstrings
gstrip
gsysdump
gwindmc
gwindres

个人感受

在 MacOS 上面,即使安装了 GNU 的 GCC,也没有在 Linux 上面用的那么爽,很多 GCC 的命令选项在 MacOS 上面无法使用,但不得不承认 LLVM 是比较优秀的编译器。

GCC 系列博文

GCC: 编译 C 语言的流程

GCC: Homebrew 安装 GCC 和 Binutils

GCC: 共享库

GCC: 静态库


扫码关注,你我就各多一个朋友~

坚持原创技术分享!