Linux上编译和安装GCC

Linux上编译和安装GCC

作者:A.TNG
邮箱:jiyucn@163.com
参考:Installation document of GCC
时间:4/13/2008

前言

最近在构建一套开发环境,对GCC有特殊的要求,使用RPM包安装 的GCC已经不能满足要求了,因此决定手动编译安装GCC。

原本想走一些捷径,希望RPM包安装也可以达到手动安装的灵活性, 后来发现此路不通;接下来又想找网络上是否提供编译好的tar包下 载,解压后就可直接运行,后来发现GCC平台依赖性很强,此路亦 不通。

于是只能选择源代码编译和安装GCC了。

第一步:准备工作

我是从一台最小化安装CentOS 5的Linux PC上开始安装GCC的, 其实如果你有一台安装了开发环境的Linux PC,则可以跳过这一 步。

首先,机器上必须安装好GCC,才能够从源代码编译和安装新的GCC, 因此我安装了下列RPM包作为开发环境。(注意,我的系统是 CentOS 5,其他平台可以选择相关的开发工具包)。

  • rpm -ivh cpp-4.1.1-52.el5.i386.rpm
  • rpm -ivh glibc-headers-2.5-12.i386.rpm
  • rpm -ivh glibc-devel-2.5-12.i386.rpm
  • rpm -ivh libgomp-4.1.1-52.el5.i386.rpm
  • rpm -ivh gcc-4.1.1-52.el5.i386.rpm
  • rpm -ivh libstdc++-devel-4.1.1-52.el5.i386.rpm
  • rpm -ivh gcc-c++-4.1.1-52.el5.i386.rpm
  • rpm -ivh zlib-devel-1.2.3-3.i386.rpm

安装完以上的工具包后,系统中gcc/g++命令就可用了。

GCC的tar包里面提供了test suite,编译完成后可以执行这些测试, 用以分析编译是否成功。因此系统中需要安装另外的工具包:

  • rpm -ivh expect-5.43.0-5.1.i386.rpm
  • rpm -ivh dejagnu-1.4.4-5.1.noarch.rpm

安装完以上工具包后,系统中runtest命令就可以用了。

第二步:configure和make

configure

configure是个很关键的步骤,如果遇到编译错误,首先应该想到 可能是configure的问题,接下来想到可能是系统中缺少相关的软 件包,编译过程中找不到头文件等。

我使用的编译参数是:

./configure --prefix=/opt/gcc-x.y.z --enable-shared /
--enable-threads=posix --enable-clocale=gnu /
--enable-__cxa_atexit --disable-checking /
--enable--long-long

依次解释:

  • --prefix=/opt/gcc-x.y.z 是用来指定安装目录,注意,该目录尽量不要与源代码是同一目录, 也不能是源代码的子目录。
  • --enable-shared 创建共享库
  • --enable-threads=posix 启用线程支持,在某些平台上是默认值。它对Obj-C的库以及C++、 Java的异常处理有影响。
  • --enable-clocale=gnu 本参数确保C++库在任何情况下都使用正确的locale 模块。如果配置脚本查找到de_DE这个locale,它就会 使用正确的gnu模块。然而,有的人没有安装de_DE,就有可能创建 出ABI不兼容的C++库文件,这是因为错误的使用了generic作为 locale模块。
  • --enable-__cxa_atexit 使用 __cxa_atexit来代替 atexit,用来记录本地和全局的 C++ destructors,这是为了完全符合标准的规定。它还会影响到C++ ABI, 因此生成的C++共享库,在其他的Linux发行版上也能使用。
  • --disable-checking 为节省编译时间,我们使用此选项,对结果没有影响。
  • --enable--long-long 支持long long数据类型,某些开源项目使用了该数据类型。

完成configure工作后,会自动生成Makefile,接下来就可以开始漫长 的编译工作了。

如果configure的参数把你绕得很晕, 传递尽量少的参数给configure,默认 的参数在大多数情况下是适用的。

make

使用如下命令开始编译:

make bootstrap

不同配置的机器,编译时间的长短不一样,相同的是,都是极其漫长的 过程。

第三步:执行测试(可选)

GCC的tar包里面提供了test suite,帮助进行测试,用来分析编译是否 成功。

执行如下命令开始测试:

make -k check > check.log

同样,这是个漫长的过程。

测试完成后,可以访问 http://gcc.gnu.org/buildstat.html ,对比测试结果。

第四步:安装

如果没有错误,接下来就可以开始安装了:

make install
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值