- 论坛徽章:
- 0
|
前言
最近在构建一套开发环境,对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
参考
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/19538/showart_1797100.html |
|