linux安装GCC详解

来源:互联网 发布:sql语句美化原理 编辑:程序博客网 时间:2024/05/22 07:29
目前,GCC可以用来编译C/C++、FORTRAN、JAVA、OBJC、ADA等语言的程序,可根据需要选择安装支持的语言。
因项目要求,需要在Redhat Linux原本安装有GCC4.1.2的基础上,再安装GCC4.5.1。

安装之前,系统中必须要有cc或者gcc等编译器,并且是可用的,或者用环境变量CC指定系统上的编译器。
如果系统上没有编译器,不能安装源代码形式的GCC 4.5.1。
如果是这种情况,可以在网上找一个与你系统相适应的如RPM等二进制形式的GCC软件包来安装使用。
本文介绍的是以源代码形式提供的GCC软件包的安装过程,
软件包本身和其安装过程同样适用于其它Linux和Unix系统。

系统上原来的GCC编译器可能是把gcc等命令文件、库文件、头文件等分别存放到系统中的不同目录下的。
与此不同,现在GCC建议我们将一个版本的GCC安装在一个单独的目录下
。这样做的好处是将来不需要它的时候可以方便地删除整个目录即可(因为GCC没有uninstall功能);
缺点是在安装完成后要做一些设置工作才能使编译器工作正常。

在本文中采用这个方案安装GCC 4.5.1,并且在安装完成后,
仍然能够使用原来低版本的GCC编译器,
即一个系统上可以同时存在并使用多个版本的GCC编译器。

按照本文提供的步骤和设置选项,即使以前没有安装过GCC,
也可以在系统上安装上一个可工作的新版本的GCC编译器。

1. 下载

在GCC网站上(http://gcc.gnu.org)或者通过网上搜索可以查找到下载资源。
下载: http://ftp.gnu.org/gnu/gcc/gcc-4.5.1/gcc-4.5.1.tar.bz2
浏览: http://ftp.gnu.org/gnu/gcc/gcc-4.5.1/
查看Changes: http://gcc.gnu.org/gcc-4.5/changes.htm

可供下载的文件一般有两种形式:gcc-4.5.1.tar.gz和gcc-4.5.1.tar.bz2,
只是压缩格式不一样,内容完全一致,下载其中一种即可。

2. 解压缩

拷贝gcc-4.5.1.tar.bz2(我下载的压缩文件)到/usr/local/src(根据自己喜好选择)下,
根据压缩格式,选择下面相应的一种方式解包:
$ tar zxvf gcc-4.1.2.tar.gz
或者
$ tar jxvf gcc-4.5.1.tar.bz2

新生成的gcc-4.5.1这个目录被称为源目录,用${srcdir}表示它。
以后在出现${srcdir}的地方,应该用真实的路径来替换它。
用pwd命令可以查看当前路径。
在${srcdir}/INSTALL目录下有详细的GCC安装说明,
可用浏览器打开index.html阅读。

3. 建立目标目录

目标目录(用${objdir}表示)是用来存放编译结果的地方。
GCC建议编译后的文件不要放在源目录${srcdir]中(虽然这样做也可以),
最好单独存放在另外一个目录中,而且不能是${srcdir}的子目录。

例如,可以这样建立一个叫 /usr/local/gcc-4.5.1的目标目录:
$ mkdir /usr/local/gcc-4.5.1
$ cd gcc-4.5.1

以下的操作主要是在目标目录 ${objdir} 下进行。(否则会出错,后面有解释)

4. 配置

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

配置是通过执行${srcdir}下的configure来完成的。
其命令格式为(记得用你的真实路径替换${destdir}):

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

例如,如果想将GCC 4.5.1安装到/usr/local/gcc-4.5.1目录下,则${destdir}就表示这个路径。

我是这样配置的:
$ ../gcc-4.5.1/configure --prefix=/usr/local/gcc-4.5.1 --enable-threads=posix 
--disable-checking --enable--long-long --enable-languages=c,c++,java

将GCC安装在/usr/local/gcc-4.5.1目录下,支持C/C++和JAVA语言,其它选项参见GCC提供的帮助说明。
1)出现配置错误提示:
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... x86_64-unknown-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking whether ln works... yes
checking whether ln -s works... yes
checking for a sed that does not truncate output... /bin/sed
checking for gawk... gawk
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables... 
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking for gnatbind... no
checking for gnatmake... no
checking whether compiler driver understands Ada... no
checking how to compare bootstrapped objects... cmp --ignore-initial=16 $$f1 $$f2
checking for objdir... .libs
checking for the correct version of gmp.h... no
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.  Source code for these libraries can be found at
their respective hosting sites as well as at
ftp://gcc.gnu.org/pub/gcc/infrastructure/.  See also
http://gcc.gnu.org/install/prerequisites.html for additional info.  If
you obtained GMP, MPFR and/or MPC from a vendor distribution package,
make sure that you have installed both the libraries and the header
files.  They may be located in separate packages.

2)解决办法:
http://www.multiprecision.org/mpc            
下载
$ wget ftp://ftp.gnu.org/gnu/mpc/mpc-1.0.2.tar.gz      
$ wget ftp://ftp.gnu.org/gnu/gmp/gmp-5.0.1.tar.bz2  
下载gmp-5.0.1.tar.bz2
http://ftp.gnu.org/gnu/mpfr/
$wget http://ftp.gnu.org/gnu/mpfr/mpfr-3.1.2.tar.gz
下载mpfr-3.1.2.tar.gz。
     
先开始安装GMP。
解压GMP的压缩包后,得到源代码目录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
     
mpfr和mpc的安装方法与gmp类似。
不过要注意配置的时候要把gmp与mpfr的依赖关系选项加进去,
具体命令如下:


再安装mpfr
$ 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


最后安装mpc
$ 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
安装好这三个库之后,就可以正式开始安装gcc了。  
当然了链接的时候,需要刚刚编译的3个lib。


$ vim /etc/profile
在最后一行加入:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mpc-1.0.2/lib:/usr/local/gmp-5.0.1/lib:/usr/local/mpfr-3.1.0/lib 
保存并退出
$ source /etc/profile  
然后是典型的configure,make,install三步曲。
$ ./configure --prefix=/usr/local/gcc-4.5.1 --enable-threads=posix --disable-checking --disable-multilib --enable-languages=c,c++
  --with-gmp=/usr/local/gmp-5.0.1 --with-mpfr=/usr/local/mpfr-3.1.0 --with-mpc=/usr/local/mpc-1.0.2
$ make
$ make check(可选)
$ sudo make install


经过漫长的等待,检查一下成果:
$ /usr/local/gcc-4.5.1/bin/gcc4.5.1 -v
Using built-in specs.
COLLECT_GCC=/usr/local/gcc-4.5.1/bin/gcc4.5.1
COLLECT_LTO_WRAPPER=/usr/local/gcc-4.5.1/libexec/gcc/x86_64-unknown-linux-gnu/4.5.1/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: ./configure --prefix=/usr/local/gcc-4.5.1 --enable-threads=posix --enable-checking=release --program-suffix=4.5.1 
--enable--long-long --enable-languages=c,c++,java --with-gmp=/usr/local/gmp-5.0.1 --with-mpfr=/usr/local/mpfr-3.1.0 --with-mpc=/usr/local/mpc-1.0.2
Thread model: posix
gcc version 4.5.1 (GCC)

表示安装成功了!!!

5. 编译

$ make

6. 安装

执行下面的命令将编译好的库文件等拷贝到${destdir}目录中
(根据你设定的路径,可能需要管理员的权限):
$ make install


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

7. 其它设置

GCC 4.5.1的所有文件,包括命令文件(如gcc、g++)、库文件等都在${destdir}目录下分别存放,
如命令文件放在bin目录下、库文件在 lib下、头文件在include下等。
由于命令文件和库文件所在的目录还没有包含在相应的搜索路径内,
所以必须要作适当的设置之后编译器才能顺利地找到并使用它们。

7.1 gcc、g++、gcj的设置

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

$ which gcc
在我的系统上,上述命令显示:/usr/bin/gcc。
因此,原来的gcc命令在/usr/bin目录下。
我们可以把GCC 4.5.1中的gcc、g++、gcj等命令在/usr/bin目录下分别做一个符号连接:

$ cd /usr/bin
$ ln -s ${destdir}/bin/gcc4.5.1 gcc451
$ ln -s ${destdir}/bin/g++4.5.1 g++451
$ ln -s ${destdir}/bin/gcj4.5.1 gcj451

这样,就可以分别使用gcc451、g++451、gcj451来调用GCC 4.5.1的gcc、g++、gcj
完成对C、C++、JAVA程序的编译了。
同时,仍然能够使用旧版本的GCC编译器中的gcc、g++等命令。
(cool,我感觉棒极了!!1)

7.2 库路径的设置

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

最好添加到系统的配置文件中,这样就不必要每次都设置这个环境变量了,
在文件/etc/profile中添加下面两句:

LD_LIBRARY_PATH=/usr/local/gcc-4.5.1/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH

重启系统设置生效,或者执行命令
% source /etc/profile

用新的编译命令(gcc451、g++451等)编译你以前的C、C++程序,检验新安装的GCC编译器是否能正常工作。
完成了Linux安装GCC,之后你就能轻松地编辑了。

参考链接:
http://www.cnblogs.com/chuncn/archive/2010/10/15/1851853.html
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 法院判离怎么办离婚证 判决书下来后没钱还怎么办 拿调解书怎么办离婚证 判决书生效后对方拒不履行怎么办 收到民事判决公告该怎么办 苹果手机gps信号弱怎么办 二审败诉后拿到判决书怎么办 农商行房贷逾期一天怎么办 农商行房贷逾期怎么办 农发行车改司机怎么办 混泥土地泵排量不稳怎么办 改嫁上海老公孩子的户口怎么办 给小孩办社保卡怎么办 有上海居住证积分怎么办医保 未办理居住证积分新生儿医保怎么办 厦门中考居住证没满三年怎么办 海归落户过了两年期怎么办 借呗学历填错了怎么办 上海落户应届生分不够怎么办 应届生落户分数不够72分怎么办? 上海应届生落户时间延误怎么办 南京市区户口签江宁怎么办 深圳公司集体户口离职后怎么办 济南本地户口不符合入学条件怎么办 上海住亲戚家怎么办居住证 政府卖非农户口怎么办 90年代买了户口怎么办 上海应届大学生积分不够怎么办 广州居住证回执单丢了怎么办 惠阳居住证回执单丢了怎么办 南京居住证换地方了怎么办 买家退回的商品有问题怎么办 农转农户口手续怎么办 原房东不迁户口我怎么办 户主信息页掉了怎么办 户主变了户口本首页怎么办 大人户口迁走小孩户口怎么办 网银转账处理中怎么办 教育部学籍在线验证报告有错怎么办 验证码连续输入三次错误怎么办 交通运输监察大队截车了怎么办