Linux上安装GCC编译器过程

 
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.rpmlibgcj-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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值