编译安装:
1.MPFR和MPC都依赖于GMP包,所以首先安装GMP
#tar -xjvf gmp-5.0.5.tar.bz2
#cd gmp-5.0.5
#./configure (可以使用配置参数--prefix=指定安装位置,这里使用默认/usr/local/include和/usr/local/lib)
#make
#make check (这一步用来确保编译正确)如果check出类似
(error while loading shared libraries: libgmp.so.10: /
cannot open shared object file: No such file or directory) 这样的错误,执行“sudo ldconfig -
v”命令,然后重新./configure、make、make check
#make install
2.安装MPFR
#tar -xjvf mpfr-3.1.0.tar.bz2
#cd mpfr-3.1.0
#./configure --with-gmp-include=/usr/local/include --with-gmp-lib=/usr/local/lib
#make
#make check
#make install
3.安装MPC
#tar -xjvf mpc-0.
#cd mpc-0.9
#./configure --with-gmp-include=/usr/local/include --with-gmp-lib=/usr/local/lib
#make
#make check
#make install
至此,三个库安装完毕,都是安装在默认位置/usr/local/include和/usr/local/lib,为了防止GCC编译时不到这三个库,需要确认库位置是否在环境变量LD_LIBRARY_PATH中,查看环境变量内容可以用命令
#echo $LD_LIBRARY_PATH
如果该环境变量中不包含/usr/local/lib库的位置,打开linux下gcc编译的四个步骤/etc/profile文件需要添加库位置,命令如下
#vim /etc/profile
Vim插入模式下:export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/lib"
:wq 保存退出
#source /etc/profile (重新载入此配置环境变量的文件)
4.安装GCC
1)解压
#tar -xjvf gcc-4.6.
新生成的gcc-4.6.3这个目录被称为源目录,用${srcdir}表示它。以后在出现${srcdir}的地方,
应该用真实的路径来替换它。用pwd命令可以查看当前路径
2) 建立目标目录
目标目录(用${objdir}表示)是用来存放编译结果的地方。GCC建议编译后的文件不要放在源目录${srcdir]中(虽然这样做也可以),最好单独存放在另外一个目录中,而且不能是${srcdir}的子目录。
目标目录(用${objdir}表示)是用来存放编译结果的地方。GCC建议编译后的文件不要放在源目录${srcdir]中(虽然这样做也可以),最好单独存放在另外一个目录中,而且不能是${srcdir}的子目录。
例如,可以这样建立一个叫 gcc-build 的目标目录(与源目录${srcdir}是同级目录):
#mkdir gcc-build
#cd gcc-build
#cd gcc-build
以下的操作(配置、编译、安装)主要是在目标目录 ${objdir} 下进行。
3)配置
配置的目的是决定将GCC编译器安装到什么地方(${destdir}),支持什么语言以及指定其它一些选项等。其中,${destdir}不能与${objdir}或${srcdir}目录相同。
配置是通过执行${srcdir}下的configure来完成的。其命令格式为(记得用你的真实路径替换${destdir}):
# ${srcdir}/configure --prefix=${destdir} [其它选项]
例如,如果想将GCC 4.6.3安装到/usr/local/gcc-4.6.3目录下,则${destdir}就表示这个路径。
在我的机器上,我是这样配置的:
# ../gcc-4.6.3/configure --prefix=/usr/local/gcc-4.6.3 --enable-threads=posix --disable-checking --enable--long-long --with-system-zlib --enable-languages=c,c++,java
将GCC安装在/usr/local/gcc-4.6.3目录下,支持C/C++和JAVA语言,其它选项参见GCC提供的帮助说明
4)编译
#make
如果make编译时出现类似error: zlib.h: No such file or directory这样的错误
说明编译时不到zlib.h头文件,使用下列命令出本系统zlib在哪个目录下:
# find / -name zlib
在我的电脑上它在/usr/src/linux-2.6.32.12-0.7-obj/x86_64/default/include/config/zlib这个目录下,然后重新开始配置编译
#make distclean
#../gcc-4.6.3/configure --prefix=/usr/local/gcc-4.6.3 --enable-threads=posix --disable-checking --enable--long-long --with-zlib-include=/usr/src/linux-2.6.32.12-0.7-obj/x86_64/default/include/config/zlib --with-zlib-lib=/usr/src/linux-2.6.32.12-0.7-obj/x86_64/default/include/config/zlib --enable-languages=c,c++,java
#make
5) 安装
# make install
至此,GCC 4.6.3安装过程就完成了。
6) 其它设置
GCC 4.6.3的所有文件,包括命令文件(如gcc、g++)、库文件等都在${destdir}目录下分别存放,如命令文件放在bin目录下、库文件在 lib下、头文件在include下等。由于命令文件和库文件所在的目录还没有包含在相应的搜索路径内,所以必须要作适当的设置之后编译器才能顺利地到并使用它们。
6.1) gcc、g++、gcj的设置
要想使用GCC 4.6.3的gcc等命令,简单的方法就是把它的路径${destdir}/bin放在环境变量PATH中。我不用这种方式,而是用符号连接的方式实现,这样做的好处是我仍然可以使用系统上原来的旧版本的GCC编译器。
首先,查看原来的gcc所在的路径:
# which gcc
在我的系统上,上述命令显示:/usr/bin/gcc。因此,原来的gcc命令在/usr/bin目录下。我们可以把GCC 4.6.3中的gcc、g++、gcj等命令在/usr/bin目录下分别做一个符号连接:
#cd /usr/bin
#ln -s ${destdir}/bin/gcc gcc463
#ln -s ${destdir}/bin/g++ g++463
#ln -s ${destdir}/bin/gcj gc463
#ln -s ${destdir}/bin/gcc gcc463
#ln -s ${destdir}/bin/g++ g++463
#ln -s ${destdir}/bin/gcj gc463
这样,就可以分别使用gcc463、g++463、gcj463来调用GCC 4.6.3的gcc、g++、gcj完成对C、C++、JAVA程序的编译了。同时,仍然能够使用旧版本的GCC编译器中的gcc、g++等命令。
6.2) 库路径的设置
将${destdir}/lib路径添加到环境变量LD_LIBRARY_PATH中,最好添加到系统的配置文件中,这样就不必要每次都设置这个环境变量了。
例如,如果GCC 4.6.3安装在/usr/local/gcc-4.6.3目录下,在Suse Linux下可以直接在命令行上执行或者在文件/etc/profile中添加下面一句:
export LD_LIBRARY_PATH=/usr/local/gcc-4.6.3/lib:$LD_LIBRARY_PATH
7) 测试
用新的编译命令编译你以前的C、C++程序,检验新安装的GCC编译器是否能正常工作。
用新的编译命令编译你以前的C、C++程序,检验新安装的GCC编译器是否能正常工作。
#gcc –v (可以查看以前的gcc版本)
#gcc463 –v (可以查看新安装的版本)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论