gcc(GNU编译器套件)
开放、自由和灵活是Linux的魅力所在,而这一点在gcc上的体现就是程序员通过它能够更好地控制整个编译过程。
在使用gcc编译程序时,编译过程可以细分为4个阶段:
- 预处理(Pre-Processing)
- 编译(Compiling)
- 汇编(Assembling)
- 链接(Linking)
Linux程序员可以根据自己的需要让gcc在编译的任何阶段结束,检查或使用编译器在该阶段的输出信息,或者对最后生成的二进制文件进行控制,以便通过加入不同数量和种类的调试代码来为今后的调试做好准备。与其他常用的编译器一样,gcc也提供了灵活而强大的代码优化功能,利用它可以生成执行效率更高的代码。
gcc提供了30多条警告信息和3个警告级别,使用它们有助于增强程序的稳定性和可移植性。此外,gcc还对标准的C和C++语言进行了大量的扩展,提高了程序的执行效率,有助于编译器进行代码优化,能够减轻编程的工作量。
安装GCC
下载GCC源码
1.下载网址:http://ftp.gnu.org
wget http://ftp.gnu.org/gnu/gcc/gcc-8.3.0/gcc-8.3.0.tar.gz
2.解压文件:
tar -zxvf gcc-8.3.0.tar.gz
3.下载编译所需要的依赖项
cd gcc-8.3.0
./contrib/download_prerequisites
gcc需要的依赖包:
gmp=‘gmp-6.1.0.tar.bz2’
mpfr=‘mpfr-3.1.4.tar.bz2’
mpc=‘mpc-1.0.3.tar.gz’
isl=‘isl-0.18.tar.bz2’
依赖包下载网址:
base_url=‘ftp://gcc.gnu.org/pub/gcc/infrastructure/’
各依赖包下载完后会在gcc-8.3.0.tar.gz解压后的目录下,若gcc-8.3.0.tar.gz解压后的目录下不存在某个依赖包,可以自行在 ftp://gcc.gnu.org/pub/gcc/infrastructure/ 中下载所需依赖包,列如(在gcc-8.3.0.tar.gz解压后的目录执行):
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/gmp-6.1.0.tar.bz2
解压依赖包:
tar -jxvf gmp-6.1.0.tar.bz2
tar -jxvf mpfr-3.1.4.tar.bz2
tar -zxvf mpc-1.0.3.tar.gz
tar -jxvf isl-0.18.tar.bz2
安装依赖包gmp
进入gmp-6.1.0.tar.bz2解压目录后gmp-6.1.0
./configure --prefix=/usr/local/gmp-6.1.0
make
make check
make install
安装依赖包mpfr
进入mpfr-3.1.4.tar.bz2解压目录后mpfr-3.1.4
./configure --prefix=/usr/local/mpfr-3.1.4 --with-gmp=/usr/local/gmp-6.1.0
make
make check
make install
安装依赖包mpc
进入mpc-1.0.3.tar.gz解压目录后mpc-1.0.3
./configure --prefix=/usr/local/mpc-1.0.3 --with-gmp=/usr/local/gmp-6.1.0 --with-mpfr=/usr/local/mpfr-3.1.4
make
make check
make install
安装依赖包isl
进入isl-0.18.tar.bz2解压目录后isl-0.18
./configure --prefix=/usr/local/isl-0.18 --with-gmp-prefix=/usr/local/gmp-6.1.0
make
make check
make install
解压gmp时出错
tar (child): bzip2: Cannot exec: No such file or directory
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now
解决方法很简单,只要安装bzip2就行了,yum安装的命令如下:
yum -y install bzip2
安装GCC
gcc-8.3.0.tar.gz解压后的目录
./configure --prefix=/usr/local/gcc/8.3.0 --enable-threads=posix --enable-checking=release --enable-languages=c,c++ --disable-multilib --with-gmp=/usr/local/gmp-6.1.0 --whit-mpfr=/usr/local/mpfr-3.1.4 --with-mpc=/usr/local/mpc-1.0.3
make
make install
make过程时间比较长,需耐心等待,等待了一晚上
配置GCC
vi /etc/profile
export PATH=/usr/local/gcc/8.3.0:$PATH
source /etc/profile