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


发布评论