没记错的话现在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软件包的安装过程,此安装过程同样适用于其它Linux和Unix系统。
系统上原来的gcc编译器可能是把gcc等命令文件、库文件、头文件等分别存放到系统中的不同目录下的。但是由于gcc没有uninstall功能,所以建议把gcc的所有文件安装到同一目录下。安装步骤如下:
1. 下载
在gcc网站上()或者通过百度一下找到下载资源。目前gcc的最新版本为 4.2.2,我用的是3.4.6。可供下载的文件一般有两种形式:gcc-3.4.6.tar.gz和gcc-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 PM750,1.86MHz,红旗是在虚拟机里装的。。
6. 安装
执行下面的命令会把编译好的文件拷贝到${destdir}目录中(根据你设定的路径,可能需要管理员的权限,如果你用的root登录那就没问题,如果不是那就根据自己的系统使用root权限):
make install
文件拷完了gcc3.4.6安装过程也就完成了。
6. 其它设置
GCC 3.4.6的所有文件,包括命令文件(如gcc、g++)、库文件等都在${destdir}目录下分别存放,如命令文件放在bin目录下、库文件在 lib下、头文件在include下等。
6.1 gcc、g++的设置
which gcc
在我的系统上,上述命令显示:/usr/bin/gcc。所以系统原来的gcc命令在/usr/bin目录下。我们可以把gcc 3.4.6中的gcc、g++等命令在/usr/bin目录下分别做一个符号连接:
% cd /usr/bin
% ln -s ${destdir}/bin/gcc gcc34
% ln -s ${destdir}/bin/g++ g++34
这样,就可以分别使用gcc34、g++34、gcj34来调用GCC 3.4.6的gcc、g++来编译程序了。与此同时,系统中原来带有的其版本的gcc编译器中的gcc、g++等命令仍然可以使用。
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) |