Mac OS X 10.11源码安装GCC 5.1.0
1、环境
宿主:Mac OS X 10.11
第三方依赖库: gmp 6.1.0、mpfr 3.1.4、mpc 1.0.3
2、前提
执行
xcode-select --install
下载Mac OS X Command Line Tools,安装完毕后/usr/include会有下载好的头文件,不执行此步骤会在后续的gcc编译过程中找不到在/usr/include下的系统头文件。
3、第三方依赖库安装
顺序:gmp->mpfr->mpc
过程:./configure->make->make check->sudo make install
编译安装完后,库文件放置在/usr/local/lib,头文件放置在/usr/local/include
4、编译安装GCC
./configure 确保上述步骤执行没用问题
make 这个过程耗时一个小时,结果最后还是出错了,错误如下
-fgnu-runtime -fno-common -DPIC -o .libs/NXConstStr.o
/var/tmp//ccc9efWx.s:98:17: error: non-local symbol required in directive
.no_dead_strip L_OBJC_Module
^
make: *** [NXConstStr.lo] Error 1
搜索发现这是一个bug,新版本的苦又来了,幸好官方已经给了解决方案。
修改gcc-5.1.0/gcc/config/darwin.c文件中的darwin_mark_decl_preserved方法。
make clean 重新编译。
结果又踩雷一次,编译到与Java运行时库链编时报错
natArray.s:2047:2: error: ambiguous instructions require an explicit suffix (could be 'filds', or 'fildl')
fild 14(%esp)
^
This issue can be reproduced with the attached natArray.s assembly file using the command...
as -arch i386 -force_cpusubtype_ALL -o natArray.o natArray.s
还是一个bug,按照bug patch修复configure文件还是不能编译通过,最后无奈添加忽略Java语言,
运行./configure --enabled-languages=ada
, c
, c++
, fortran
, go
, jit
, lto
, objc
, obj-c++
重新运行 make dist-clean&make继续。
经过一个多小时后编译完成,sudo make install 大功告成。
后期测试发现gcc 5.3.0没有上述问题,可以考虑安装。