linux下安装gcc

1、了解一下gcc

  目前,GCC可以用来编译C/C++、FORTRAN、JAVA、OBJC、ADA等语言的程序,可根据需要选择安装支持的语言。我自己linux上是4.1.2版本,是不支持openMP的,而自己又要用到openMP,所以自己在原来的基础上安装了一个4.2以上版本的。

  在安装之前,系统必须有cc或者gcc的编译器,如果没有,就不能安装更高版本的gcc了,如果是这种情况,可以在网上找一个与你系统相适应的如RPM等二进制形式的GCC软件包来安装使用。

  本文介绍的是以源代码安装gcc的过程,我安装的是在一个单独的目录下,以后想卸载的话,直接删除该目录就行,本文介绍的是安装4.3.4版本的详细过程。只需要按照以下步骤来一步一步安装就行。
  



2、需要下载的安装包

2.1 下载gcc

  下载网址是http://ftp.gnu.org/gnu/gcc/,可以根据自己的需要下载哪个版本,我选择的是4.3.4版本。里面有gcc-4.3.4.tar.bz2,gcc-4.3.4.tar.gz,任意选一个就行,它们是完全一个样的。我选择的是gcc-4.3.4.tar.gz。还可以查看Changes: http://gcc.gnu.org/gcc-4.5/changes.htm,相比上一个版本有哪些改变,自己随便看就行

2.2 下载3个依赖包

  一个是mpc,一个是gmp,一个是mpfr,下载地址依次为:
ftp://ftp.gnu.org/gnu/mpc/mpc-1.0.2.tar.gz
ftp://ftp.gnu.org/gnu/gmp/gmp-5.0.1.tar.bz2
http://ftp.gnu.org/gnu/mpfr/mpfr-3.1.2.tar.gz
安装的顺序依次为:GMP,mpfr, mpc,最后安装gcc。

我开始就直接安装gcc,在配置过程出现以下信息:
configure: error: Building GCC requires GMP 4.2+, MPFR 2.3.1+ and MPC 0.8.0+.Try the –with-gmp, –with-mpfr and/or –with-mpc options to specify their locations.
提示安装gcc之前,必须安装GMP 4.2以上版本,MPFR2.3.1以上版本, MPC 0.8.0以上版本。



3、安装步骤

3.1 安装GMP-5.0.1.

  我这里选择的是GMP5.0.1版本,解压gmp-5.0.1后,得到源代码目录,创建一个临时编译目录temp。

$ tar -jxvf gmp-5.0.1.tar.bz2
$ cd gmp-5.0.1
$ mkdir temp
$ cd temp

开始配置安装目录,进入temp目录后,输入以下命令:

$ ../configure --prefix=/usr/local/gmp-5.0.1
$ make
$ make install

这样gmp就安装完成了。安装mpfr和mpc过程也差不多,只是安装的时候得加入依赖项

3.2 安装mpfr

  我这里选择的是3.1.2版本的mpfr。解压,建立临时编译目录temp,进入temp目录

$ tar -zxvf mpfr-3.1.2.tar.gz 
$ cd mpfr-3.1.2
$ mkdir temp
$ cd temp

$ ../configure --prefix=/usr/local/mpfr-3.1.0 --with-gmp=/usr/local/gmp-5.0.1
$ make
$ make install

其中–with=/usr/local/gmp-5.0.1就是依赖项, /usr/local/gmp-5.0.1是gmp的安装目录

3.3 安装mpc

  我选择的是1.0.2版本mpc.解压,建立临时编译目录temp,进入temp目录.

$ tar -zxvf mpc-1.0.2.tar.gz
$ cd mpc-1.0.2
$ mkdir temp
$ cd temp

$ ../configure --prefix=/usr/local/mpc-1.0.2 --with-gmp=/usr/local/gmp-5.0.1 --with-mpfr=/usr/local/mpfr-3.1.0

$ make
$ make install

记得后面两项的依赖项,也就是你的gmp和mpfr的安装目录

安装三个依赖库完毕之后记住一定要把库路径添加到 /etc/ld.so.conf文件中

vi /etc/ld.so.conf

添加:

/usr/local/gmp-5.0.1/lib
/usr/local/mpfr-3.1.0/lib
/usr/local/mpc-1.0.2/lib

添加路径完之后一定要执行

ldconfig

3.4 安装gcc

  前面安装的三个,都是为安装gcc做准备的。解压gcc的安装包

$ tar zxvf gcc-4.3.4.tar.gz 
或者 
$ tar jxvf gcc-4.5.1.tar.bz2

得到的目录gcc-4.3.4就是源目录。在gcc-4.3.4里的INSTALL目录里就有安装的详细过程,那全都是英文的,里面的源目录也是用${srcdir}表示。我是解压在/usr/local/src/gcc-4.3.4目录里。

建立编译目录,build:

$ mkdir /usr/local/gcc-4.3.4/build
$ cd gcc-4.3.4/build

然后以下所有的操作都在该目录下进行.

开始进行配置:

这是你gcc安装的地方,用${destdir}表示。

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

安装的时候记得把真实目录替换掉 srcdir {destdir}。
当前在build 目录下,可以这么写:

$ ../configure --prefix=/usr/local/gcc-4.6.4 --enable-threads=posix --disable-checking --enable--long-long --enable-languages=c,c++,java --with-gmp=/usr/local/gmp-5.0.5 --with-mpfr=/usr/local/mpfr-3.1.0 --with-mpc=/usr/local/mpc-0.9

注意事项:
记得加上后面三个依赖项,否则会出刚开始出现的错误的。
coufigure没问题了,就可以编译安装了:

$ make
$ make install

安装的时候等挺长时间,差不多两个小时。

3.5 gcc、g++、gcj设置

  要想使用GCC 4.3.4的gcc等命令,简单的方法就是把它的路径${destdir}/bin放在环境变量PATH中。我不用这种方式,而是用符号连接的方式实现,这样做的好处是我仍然可以使用系统上原来的旧版本的GCC编译器。

  而原来gcc的路径是在usr/bin下。我们可以把gcc 4.3.4中的gcc、g++、gcj等命令在/usr/bin目录下分别做一个符号连接:

$ cd /usr/bin
$ ln -s /usr/local/gcc-4.3.4/bin/gcc gcc434
$ ln -s /usr/local/gcc-4.3.4/bin/g++ g++434
$ ln -s /usr/local/gcc-4.3.4/bin/gcj gcj434

注意,不能这样写:
$ ln -s XXX /usr/bin/gcc434
这样的连接会出错,不知道为什么。所以最好还是先到要链接的目录内

  这样,就可以分别使用gcc434、g++434、gcj434来调用GCC 4.1.2的gcc、g++、gcj完成对C、C++、JAVA程序的编译了。同时,仍然能够使用旧版本的GCC编译器中的gcc、g++等命令。

3.6 库路径的设置

临时导入到环境变量:
将${destdir}/lib路径添加到环境变量LD_LIBRARY_PATH中,例如,如果GCC 4.3.4安装在/usr/local/gcc-4.3.4目录下,在RH Linux下可以直接在命令行上执行

$ export LD_LIBRARY_PATH=/usr/local/gcc-4.3.4/lib

修改系统配置,针对单用户:
最好添加到系统的配置文件中,这样就不必要每次都设置这个环境变量了,在文件$HOME/.bash_profile中添加下面两句:

LD_LIBRARY_PATH=:/usr/local/mpc-1.0.2/lib:/usr/local/gmp-5.0.1/lib:/usr/local/mpfr-3.1.2/lib:/usr/local/gcc-4.3.4/lib

export LD_LIBRARY_PATH

修改系统配置,针对所有用户:
或者在/etc/bash_profile 下添加。

重启系统设置生效,或者执行命令

$ source $HOME/.bash_profile
或者:
$ source /etc/bash_profile

修改系统配置,针对所有用户:
当然,也可以所库路径添加到 /etc/ld.so.conf文件中。

用新的编译命令(gcc412、g++412等)编译你以前的C、C++程序,检验新安装的GCC编译器是否能正常工作。

完成了Linux安装GCC,之后你就能轻松地编辑了。



4. 注意事项

1. 找不到 version `CXXABI_1.3.8’ not found

原因是:
gcc本身的标准库版本太低了

strings libstdc++.so.6 | grep CXXABI

发现没有CXXABI_1.3.8

解决方法:
先看系统里有没有新的libstdc++,

find / -name "libstdc++.so*"

把它拷到你编译路径下的 libstdc++.so* 存放的位置,

删掉libstdc++.so.6这个软连接
rm -rf libstdc++.so.6

建立新连接
ln -s libstdc++.so.6.0.22(新的库) libstdc++.so.6

千万别忘了
ldconfig  

最后再检查一下,

strings /usr/编译路径/libstdc++.so.6 | grep GLIBC

如果有 CXXABI_1.3.8 出现就解决了这个问题。

  • 6
    点赞
  • 80
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值