2024年5月30日发(作者:)

redhat9安装GCC3.4.6并在linux中使用多版本的GCC【转】

一、安装之前先确认GCC是否安装,GCC的版本等信息;用gcc -v来确定一下

版本

gcc -v

Reading specs from ./../lib/gcc-lib/i386-redhat-linux/3.2.2/specs

Configured with: ../configure --prefix=/usr --mandir=/usr/share/man

--infodir=/usr/share/info --enable-shared --enable-threads=posix

--disable-checking --with-system-zlib --enable-__cxa_atexit

--host=i386-redhat-linux

Thread model: posix

gcc version 3.2.2 20030222 (Red Hat Linux 3.2.2-5)

二、安装gcc3.4.6

1、下载软件包

2、减压软件包tar jxvf

3、进入gcc-3.4.6目录对其进行配置

./configure --prefix=/usr/local/gcc-3.4.6 --enable-threads=posix

--disable-checking --enable--long-long --host=i386-redhat-linux

--with-system-zlib --enable-languages=c,c++,java

其中--prefix=/usr/local/gcc-3.4.6为指定GCC的安装路径

关于GCC的一些编译选项。可以参考帮助文档,在${srcdir}/INSTALL

目录下有详细的GCC安装说明,可用浏览器打开阅读

4、编译 gcc3.4.6

make 时间比较长,我的计算机较慢用了四个小时左右(超级郁闷,想杀

人),要是速度快的话时间会短几倍

5、安装 执行下面的命令将编译好的库文件等拷贝到${destdir}目录中

(根据你设定的路径,可能需要管理员的权限):

make install

至此,GCC 3.4.6安装过程就完成了

6、设置

GCC 3.4.6的所有文件,包括命令文件(如gcc、g++)、库文件等都在

${destdir}目录下分别存放,如命令文件放在bin目录下、库文件在lib下、

头文件在include下等。由于命令文件和库文件所在的目录还没有包含在相应

的搜索路径内,所以必须要作适当的设置之后编译器才能顺利地找到并使用它

们。

(1) gcc、g++、gcj的设置

要想使用GCC 3.4.6的gcc等命令,简单的方法就是把它的路径

${destdir}/bin放在环境变量PATH中。我不用这种方式,而是用符号连接的方

式实现,这样做的好处是我仍然可以使用系统上原来的旧版本的GCC编译器。

首先,查看原来的gcc所在的路径: which gcc

在我的系统上,上述命令显示:/usr/bin/gcc。因此,原来的gcc命令在

/usr/bin目录下。

我们可以把GCC 3.4.6中的gcc、g++、gcj等命令在/usr/bin目录下分别做

一个符号连接:

在做连接之前我们还必须做一个工作,将以前的gcc、g++、gcj文件删除,

但是为了保证我们任能够使用以前的GCC我们可以将起重命名gcc_bak、

g++_bak、gcj_bak

cd /usr/bin

mv gcc gcc_bak

mv g++ g++_bak

mv gcj gcj_bak

ln -s ${destdir}/bin/gcc gcc

ln -s ${destdir}/bin/g++ g++

ln -s ${destdir}/bin/gcj gcj

这样,就可以分别使用gcc、g++、gcj来调用GCC 3.4.6的gcc、g++、gcj完

成对C、C++、JAVA程序的编译了。同时,仍然能够使用旧版本的GCC编译器中

的gcc、g++等命令。

(2) 库路径的设置

将${destdir}/lib路径添加到环境变量LD_LIBRARY_PATH中,最好添加到系统

的配置文件中,这样就不必要每次都设置这个环境变量了。

例如,如果GCC 3.4.6安装在/usr/local/gcc-3.4.6目录下,在RH Linux下

可以直接在命令行上执行:export

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

或者在文件/etc/profile中添加下面一句: set LD_LIBRARY_PATH

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

7、测试

(1) 用gcc -v来确定一下版本,下面可以看到打印出来的信息

gcc -v

Reading specs from

/usr/local/gcc-3.4.6/lib/gcc/i386-redhat-linux/3.4.6/specs

Configured with: ./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++,javaThread

model: posix

gcc version 3.4.6

(2) 用新的(gcc、g++等)编译你以前的C、C++程序,检验新安装的GCC编译器

是否能正常工作。

8、根据需要,可以删除或者保留${srcdir}和${objdir}目录

三、linux多GCC版本设置

1、按照上述的设置我们的GCC变成3.4.6版本了,如果想用以前的版本的

话,可以用下面的命令来设置,将其/usr/bin下的gcc、g++、gcj文件删除(一定

要执行扫除命令),然后在重新做一个连接符号;或者将其更改的名字更改回来

rm /usr/bin/gcc