2004
年
4
月
20
日
最新版本的
GCC
编译器
3.4.0
发布了。目前,
GCC
可以用来编译
C/C++
、
FORTRAN
、
JAVA
、
OBJC
、
ADA
等语言的程序,可根据需要选择安装支持的语言。
GCC3.4.0
比以前版本更好地支持了
C++
标准。本文以在
RedhatLinux
上安装
GCC3.4.0
为例,介绍了
GCC
的安装过程。
安装之前,系统中必须要有
cc
或者
gcc
等编译器,并且是可用的,或者用环境变量
CC
指定系统上的编译器。如果系统上没有编译器,不能安装源代码形式的
GCC3.4.0
。如果是这种情况,可以在网上找一个与你系统相适应的如
RPM
等二进制形式的
GCC
软件包来安装使用。本文介绍的是以源代码形式提供的
GCC
软件包的安装过程,软件包本身和其安装过程同样适用于其它
Linux
和
Unix
系统。
系统上原来的
GCC
编译器可能是把
gcc
等命令文件、库文件、头文件等分别存放到系统中的不同目录下的。与此不同,现在
GCC
建议我们将一个版本的
GCC
安装在一个单独的目录下。这样做的好处是将来不需要它的时候可以方便地删除整个目录即可(因为
GCC
没有
uninstall
功能);缺点是在安装完成后要做一些设置工作才能使编译器工作正常。在本文中我采用这个方案安装
GCC3.4.0
,并且在安装完成后,仍然能够使用原来低版本的
GCC
编译器,即一个系统上可以同时存在并使用多个版本的
GCC
编译器。
按照本文提供的步骤和设置选项,即使以前没有安装过
GCC
,也可以在系统上安装上一个可工作的新版本的
GCC
编译器。
1.
下载
在
GCC
网站上(
http://gcc.gnu.org/
)或者通过网上搜索可以查找到下载资源。目前
GCC
的最新版本为
3.4.0
。可供下载的文件一般有两种形式:
gcc-3.4.0.tar.gz
和
gcc-3.4.0.tar.bz2
,只是压缩格式不一样,内容完全一致,下载其中一种即可。
2.
解压缩
根据压缩格式,选择下面相应的一种方式解包(以下的
"%"
表示命令行提示符):
% tar xzvf gcc-3.4.0.tar.gz
或者
% bzcat gcc-3.4.0.tar.bz2 | tar xvf -
新生成的
gcc-3.4.0
这个目录被称为源目录,用
${srcdir}
表示它。以后在出现
${srcdir}
的地方,应该用真实的路径来替换它。用
pwd
命令可以查看当前路径。
在
${srcdir}/INSTALL
目录下有详细的
GCC
安装说明,可用浏览器打开
index.html
阅读。
3.
建立目标目录
目标目录(用
${objdir}
表示)是用来存放编译结果的地方。
GCC
建议编译后的文件不要放在源目录
${srcdir]
中(虽然这样做也可以),最好单独存放在另外一个目录中,而且不能是
${srcdir}
的子目录。
例如,可以这样建立一个叫
gcc-build
的目标目录(与源目录
{srcdir}
是同级目录):
% mkdir gcc-build
% cd gcc-build
以下的操作主要是在目标目录
${objdir}
下进行。
4.
配置
配置的目的是决定将
GCC
编译器安装到什么地方(
${destdir}
),支持什么语言以及指定其它一些选项等。其中,
${destdir}
不能与
${objdir}
或
${srcdir}
目录相同。
配置是通过执行
${srcdir}
下的
configure
来完成的。其命令格式为(记得用你的真实路径替换
${destdir}
):
% ${srcdir}/configure --prefix=${destdir} [
其它选项
]
例如,如果想将
GCC3.4.0
安装到
/usr/local/gcc-3.4.0
目录下,则
${destdir}
就表示这个路径。
在我的机器上,我是这样配置的:
% ../gcc-3.4.0/configure --prefix=/usr/local/gcc-3.4.0
--enable-threads=posix --disable-checking --enable--long-long --host=i386-redhat-linux --with-system-zlib --enable-languages=c,c++,java
将
GCC
安装在
/usr/local/gcc-3.4.0
目录下,支持
C/C++
和
JAVA
语言,其它选项参见
GCC
提供的帮助说明。
5.
编译
% make
这是一个漫长的过程。在我的机器上(
P4-1.6
),这个过程用了
50
多分钟。
6.
安装
执行下面的命令将编译好的库文件等拷贝到
${destdir}
目录中(根据你设定的路径,可能需要管理员的权限):
% make install
至此,
GCC 3.4.0
安装过程就完成了。
6.
其它设置
GCC3.4.0
的所有文件,包括命令文件(如
gcc
、
g++
)、库文件等都在
${destdir}
目录下分别存放,如命令文件放在
bin
目录下、库文件在
lib
下、头文件在
include
下等。由于命令文件和库文件所在的目录还没有包含在相应的搜索路径内,所以必须要作适当的设置之后编译器才能顺利地找到并使用它们。
6.1 gcc
、
g++
、
gcj
的设置
要想使用
GCC
3.4.0
的
gcc
等命令,简单的方法就是把它的路径
${destdir}/bin
放在环境变量
PATH
中。我不用这种方式,而是用符号连接的方式实现,这样做的好处是我仍然可以使用系统上原来的旧版本的
GCC
编译器。
首先,查看原来的
gcc
所在的路径:
% which gcc
在我的系统上,上述命令显示:
/usr/bin/gcc
。因此,原来的
gcc
命令在
/usr/bin
目录下。我们可以把
GCC3.4.0
中的
gcc
、
g++
、
gcj
等命令在
/usr/bin
目录下分别做一个符号连接:
% cd /usr/bin
% ln -s ${destdir}/bin/gcc gcc34
% ln -s ${destdir}/bin/g++ g++34
% ln -s ${destdir}/bin/gcj gcj34
这样,就可以分别使用
gcc34
、
g++34
、
gcj34
来调用
GCC3.4.0
的
gcc
、
g++
、
gcj
完成对
C
、
C++
、
JAVA
程序的编译了。同时,仍然能够使用旧版本的
GCC
编译器中的
gcc
、
g++
等命令。
6.2
库路径的设置
将
${destdir}/lib
路径添加到环境变量
LD_LIBRARY_PATH
中,最好添加到系统的配置文件中,这样就不必要每次都设置这个环境变量了。
例如,如果
GCC 3.4.0
安装在
/usr/local/gcc-3.4.0
目录下,在
RH
Linux
下可以直接在命令行上执行或者在文件
/etc/profile
中添加下面一句:
setenv LD_LIBRARY_PATH /usr/local/gcc-3.4.0/lib:$LD_LIBRARY_PATH
7.
测试
用新的编译命令(
gcc34
、
g++34
等)编译你以前的
C
、
C++
程序,检验新安装的
GCC
编译器是否能正常工作。
8.
根据需要,可以删除或者保留
${srcdir}
和
${objdir}
目录。
附:
redhat
中
gcc
安装
安装之前,系统中必须要有
cc
或者
gcc
等编译器,并且是可用的,或者用环境变量
CC
指定系统上的编译器。如果系统上没有编译器,不能安装源代码形式的
GCC 3.4.0
。如果是这种情况,可以在网上找一个与你系统相适应的如
RPM
等二进制形式的
GCC
软件包来安装使用。
$ rpm -ivh gcc*.rpm
redhat 9
如果以
minimal
安装
,
系统中并没有装
gcc
加载
redhat 9 disk1
$ rpm -Uvh binutils-2.13.90.0.18-9.i386.rpm
$ rpm -Uvh cpp-3.2.2-5.i386.rpm
$ rpm -Uvh glibc-devel-2.3.2-11.9.i386.rpm
加载
redhat 9 disk2,
安装
gcc
$ rpm -Uvh gcc-3.2.2-5.i386.rpm
如果安装
g++,
首先安装软件包
libstdc++-devel
$ rpm -Uvh libstdc++-devel-3.2.2-5.i386.rpm
$ rpm -Uvh gcc-c++-3.2.2-5.i386.rpm
如果安装gcc-java,首先安装libgcj-3.2.2-5.i386.rpm和libgcj-devel-3.2.2-5.i386.rpm
$ rpm -Uvh libgcj-3.2.2-5.i386.rpm
$ rpm -Uvh libgcj-devel-3.2.2-5.i386.rpm
原文地址 http://www.gogo.net.cn