Chinaunix首页 | 论坛 | 博客
  • 博客访问: 671978
  • 博文数量: 134
  • 博客积分: 3158
  • 博客等级: 中校
  • 技术积分: 1617
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-30 22:36
文章分类

全部博文(134)

文章存档

2012年(2)

2011年(28)

2010年(68)

2009年(35)

2008年(1)

我的朋友

分类: LINUX

2009-07-11 09:10:56

没记错的话现在gcc的最新版本是4.2.2,但是某些软件的编译还要用到gcc4之前版本中的一些特性,某些是gcc4所不支持的,所以必须要用 gcc3.X或者gcc2.9.X。现在的Linux发行版一般都安装了gcc4.x,同时也会保留gcc3.x,一般不需要用户自己安装。如果系统没有或者已损坏,就不得不自己动手了~本文以在Redflag Linux 6上安装gcc3.4.6为例,介绍了gcc的安装过程。

安装之前,首先要确保系统中有cc或者gcc等编译器,并且是可用的。还要把环境变量CC指向你系统上的编译器。如果系统上没有编译器,则不能编译安装gcc源码,可以选择别人做好的gcc二进制安装包(RPM,DEB)直接安装。本文介绍的是以源代码形式提供的gcc软件包的安装过程,此安装过程同样适用于其它LinuxUnix系统。

系统上原来的gcc编译器可能是把gcc等命令文件、库文件、头文件等分别存放到系统中的不同目录下的。但是由于gcc没有uninstall功能,所以建议把gcc的所有文件安装到同一目录下。安装步骤如下:

1.
下载

gcc网站上()或者通过百度一下找到下载资源。目前gcc的最新版本为 4.2.2,我用的是3.4.6。可供下载的文件一般有两种形式:gcc-3.4.6.tar.gzgcc-3.4.6.tar.bz2,二者只是压缩格式不一样,内容都是一样的,随便选一个下载就行了。在这里提供一个国内的下载站点:
       ftp://linuxforum.net/ftp.gcc.gnu.org/

2.
解压缩

      
你可以直接在下载的文件上点右键解压文件。或者可以根据你所下载的文件,在命令行下选择下面相应的命令解压缩:
       tar xzvf gcc-3.4.6.tar.gz
或者
bzcat gcc-3.4.6.tar.bz2 | tar xvf -

解压生成的gcc-3.4.6这个目录我们称为源目录,用${srcdir}表示。下文中出现的${srcdir}应该用真实的路径来替换。
${srcdir}/INSTALL目录下有详细的gcc安装说明,内容实在是过于详细,以致于我懒得看了。如果你有耐心,可以安装安装说明自己安装。如果你也懒得看,那就继续看下面我的安装过程。

3.
建立目标目录

目标目录我们用${objdir}表示,用来存放编译出来的文件gcc。最好不要把编译生成的文件放在源目录${srcdir]中,那样感觉有点乱。我们把这些文件存放在另外一个目录中,注意不能是${srcdir}的子目录。
在这里,我建了一个与源目录${srcdir}同级的目录,叫 gcc-build 。当然这目录的名字可以随便取。
mkdir gcc-build
cd gcc-build
下面的操作主要是在目标目录 ${objdir} 下进行,同样的,在下面的命令中用你的真实路径替换${objdir}

4.
配置

配置的目的是决定将gcc编译器安装到什么地方(${destdir}),支持什么语言以及指定其它一些选项等。其中,${destdir}不能与${objdir}${srcdir}目录相同。

配置是通过执行${srcdir}下的configure来完成的。其命令一般格式为:

${srcdir}/configure --prefix=${destdir} [
其它选项]

在这里,我要把gcc3.4.6安装到/usr/local/gcc-3.4.6目录下,${destdir}就表示/usr/local/gcc-3.4.6

下面是我安装的时候选择的配置:

../gcc-3.4.6/configure --prefix=/usr/local/gcc-3.4.6 --enable-threads=posix --disable-checking --host=pc-redflag-linux --with-system-zlib --enable-languages=c,c++,objc

其中选项的具体作用请参照gcc提供的说明(gcc-3.4.6/INSTALL/configure.html)。
      
这里要注意一点,--disable-checking最好带着,我安装的时候enable-checking时,configure通过后在下面的编译过程中,程序会check所有gcc自带的编译器,在check Ada的时候出错了,导致安装失败。如果你够牛,可以自己搞定最好,如果不行就不要check了,反正也没大有影响。

5.
编译

执行make命令。这个过程比较耗费时间,大概10来分钟的样子。
       PS:
cpu PM7501.86MHz,红旗是在虚拟机里装的。。

6.
安装

执行下面的命令会把编译好的文件拷贝到${destdir}目录中(根据你设定的路径,可能需要管理员的权限,如果你用的root登录那就没问题,如果不是那就根据自己的系统使用root权限):

make install

   
文件拷完了gcc3.4.6安装过程也就完成了。

6.
其它设置

GCC 3.4.6
的所有文件,包括命令文件(如gccg++)、库文件等都在${destdir}目录下分别存放,如命令文件放在bin目录下、库文件在 lib下、头文件在include下等。
6.1 gcc
g++的设置

which gcc

在我的系统上,上述命令显示:/usr/bin/gcc。所以系统原来的gcc命令在/usr/bin目录下。我们可以把gcc 3.4.6中的gccg++等命令在/usr/bin目录下分别做一个符号连接:

% cd /usr/bin
% ln -s ${destdir}/bin/gcc gcc34
% ln -s ${destdir}/bin/g++ g++34

这样,就可以分别使用gcc34g++34gcj34来调用GCC 3.4.6gccg++来编译程序了。与此同时,系统中原来带有的其版本的gcc编译器中的gccg++等命令仍然可以使用。

6.2
库路径的设置

${destdir}/lib路径添加到环境变量LD_LIBRARY_PATH中,最好添加到系统的配置文件中,这样就不必要每次都设置这个环境变量了。

如果GCC 3.4.6安装在/usr/local/gcc-3.4.6目录下,在RedFlag Linux下可以直接在命令行上执行或者在文件/etc/profile中添加下面一句:

setenv LD_LIBRARY_PATH /usr/local/gcc-3.4.6/lib:$LD_LIBRARY_PATH

至此,我们的gcc就安装成功了,可以随便写个helloworld试试~~
阅读(6362) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~