当前位置: 澳门新濠3559 > 操作系统 > 正文

今天我们就来说说GCC的编译安装,【澳门新濠3

时间:2019-11-09 19:36来源:操作系统
由于需要使用到cilkplus和std=c++14,所以决定将编译器升级。 从GCC官网下载最新版本的GCC4.6.2 CentOS6.6编译安装GCC5.2.0 CentOS6.6编译安装GCC-5.2.0 Linux下编写C/C++程序自然缺不了一个优秀的编译

由于需要使用到cilk plus和std=c++14,所以决定将编译器升级。

从GCC官网下载最新版本的GCC4.6.2

CentOS6.6编译安装GCC5.2.0

CentOS6.6编译安装GCC-5.2.0

Linux下编写C/C++程序自然缺不了一个优秀的编译器,Linux下比较常见的自然是GCC了。

2015年GCC也出到了5.2.0版本,对于C++11/14也有了更好的支持了。

所以,今天我们就来说说GCC的编译安装,安装的版本正是最新的5.2.0。

下面我们进入正题(建议整个过程以root用户进行):

1.下载GCC源码:

wget ftp://mirrors.kernel.org/gnu/gcc/gcc-5.2.0/gcc-5.2.0.tar.gz

2.解压:

tar -zxvf gcc-5.2.0.tar.gz

3.下载编译所需依赖项:

cd gcc-5.2.0 //进入解包后的gcc文件夹

./contrib/download_prerequisites //下载依赖项

cd .. //返回上层目录

4.建立编译输出目录:

mkdir gcc-build-5.2.0

5.进入输出目录,执行以下命令,并生成makefile文件:

cd gcc-build-5.2.0

../gcc-5.2.0/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib

6.编译:

make -j4

接下来就是等待了,整个过程大约40分钟左右。

PS:最好不要在编译过程中再去做别的什么事,整个过程CPU都是满载的,

要是莫名终止了,后面麻烦事也不少。切记编译时当前目录剩余空间要最少4G以上,否则会编译失败

7.安装:

编译结束以后,我们就可以执行安装了:

make install

8.检查版本:

gcc --version

或gcc -v

7.切换GCC到新版确定新安装的GCC的路径,一般默认在/usr/local/bin下。

可以先updatedb,然后locate gcc-4.8|tail找一下ls /usr/local/bin | grep gcc添加新GCC到可选项,

倒数第三个是名字,倒数第二个参数为新GCC路径,最后一个参数40为优先级,设大一些之后就自动使用新版了

update-alternatives --install /usr/bin/gcc x86_64-unknown-linux-gnu-gcc-5.2.0 /usr/local/bin/x86_64-unknown-linux-gnu-gcc-5.2.0 40

之后,你需要把usr/bin/目录下的gcc文件删除掉或者避免意外发生,可以把它命名为gcc.bak。

这里需要说明的,实际上你在用gcc -v查看当前版本时,就一直使用的usr/bin/gcc。

而ln -s /usr/local/bin/x86_64-unknown-linux-gnu-gcc-5.2.0 /usr/bin/gcc的目的就是为了生成gcc版本5.2的。

此步骤完整操作如下:

mv /usr/bin/gcc /usr/bin/gcc.bak

ln -s /usr/local/bin/x86_64-unknown-linux-gnu-gcc-5.2.0 /usr/bin/gcc

8.确认当前版本已经切换为新版gcc -v我这里用ssh远程的,发现版本没变,断开重练下,重新生成会话后发现变成了5.2了!

CentOS6.6编译安装GCC-5.2.0 Linux下编写C/C++程序自然缺不了一个优秀的编译器,Linux下比较常见的自然是GCC了。 2015年GCC也...

基本教程如下:

1.下载GCC源码:

国内镜像地址:

 wget
ftp://mirrors.kernel.org/gnu/gcc/gcc-5.4.0/gcc-5.4.0.tar.gz

首先在配置gcc的过程中会出现错误:
# ./configure --prefix=/usr/local/gcc-4.6.2
configure: error: Building GCC requires GMP 4.2+, MPFR 2.3.1+ and MPC 0.8.0+.
说明要安装gcc需要GMP、MPFR、MPC这三个库
官网下载地址:


2.解压:

由于MPFR依赖GMP,而MPC依赖GMP和MPFR,所以要先安装GMP,其次MPFR,最后才是MPC。这里三个库我用的版本分别是gmp-5.0.3,mpfr-3.1.0和mpc-0.9。
依次解压这3个压缩包

 tar -zxvf
gcc-5.4.0.tar.gz

安装gmp-5.0.3
# cd gmp-5.0.3
# ./configure --prefix=/usr/local/gmp-5.0.3
# make && make install && make clean

3.下载编译所需依赖项:

安装mpfr-3.1.0
# cd mpfr-3.1.0
# ./configure --prefix=/usr/local/mpfr-3.1.0 --with-gmp=/usr/local/gmp-5.0.3
# make && make install && make clean

  cd
gcc-5.4.0
                   //进入解包后的gcc文件夹


./contrib/download_prerequisites
                  //下载依赖项

 cd ..    
                      //返回上层目录

安装mpc-0.9
#cd mpc-0.9
# ./configure --prefix=/usr/local/mpc-0.9 --with-gmp=/usr/local/gmp-5.0.3 --with-mpfr=/usr/local/mpfr-3.1.0
# make && make install && make clean

4.建立编译输出目录:

安装好这三个库之后,就可以正式开始安装gcc了。
进入gcc源码目录
gcc的配置选项有很多,具体可以参考gcc源文件目录下的安装说明。这里只安装了c和c++的编译器。(如果不指定编译的语言,则会在make时不通过,爆出某些文件找不到等错误,所以还是建议在此指定编译语言为c,c++)然后开始make编译。为保险起见,需要在环境变量LD_LIBRARY_PATH添加前面三个库的位置,键入以下命令:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mpc-0.9/lib:/usr/local/gmp-5.0.3/lib:/usr/local/mpfr-3.1.0/lib
然后重新make编译,在经过漫长的1小时等待后,终于编译完成。

 mkdir
gcc-build-5.4.0

# ./configure --prefix=/usr/local/gcc-4.6.2 --enable-threads=posix --disable-checking --disable-multilib --enable-languages=c,c++ --with-gmp=/usr/local/gmp-5.0.3 --with-mpfr=/usr/local/mpfr-3.1.0 --with-mpc=/usr/local/mpc-0.9
# make && make install && make clean

5.进入输出目录,执行以下命令,并生成makefile文件:

至此gcc就全部安装完成了。
不过目前还不能使用新版本的gcc,因为新版的可执行文件还没加到命令的搜索路径中。在这里我为新版的gcc和g++命令分别建立了一个软链接。进入/usr/bin目录后,键入如下命令建立软链接。

  cd
gcc-build-5.4.0

 ../gcc-5.4.0/configure
–prefix=/usr/local
--enable-checking=release
--enable-languages=c,c++
--disable-multilib

--prefix很重要,一定要填。

sudo ln -s /usr/local/gcc-4.6.2/bin/gcc gcc462
sudo ln -s /usr/local/gcc-4.6.2/bin/g++ g++462
这样我使用新版本gcc的时候就可以用gcc462和g++462命令,同时也可使用原来的gcc编译程序。当然这里也可以直接将/usr/bin目录下gcc,g++命令重新链接到新版本的gcc可执行文件。在正式使用之前还有最后一个工作要做,就是将前面安装的GCC-4.6.2库的路径加进环境变量LD_LIBRARY_PATH中,不然在编译程序的时候会出错。
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/gcc-4.6.2/lib

6.编译:

由于export方式在重启后失效,所以需要编辑/etc目录下的bashrc文件配置shell环境。
在这个文件中添加以下语句:
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mpc-0.9/lib:/usr/local/gmp-5.0.3/lib:/usr/local/mpfr-3.1.0/lib:/usr/local/gcc-4.6.2/lib
export LD_LIBRARY_PATH

make -j4

以上方法不佳,可以使用下面的方法:
vi /etc/ld.so.conf
添加
/usr/local/mpc-0.9/lib
/usr/local/gmp-5.0.3/lib
/usr/local/mpfr-3.1.0/lib
/usr/local/gcc-4.6.2/lib
保存退出然后执行ldconfig使更改生效

接下来就是等待了,整个过程大约40分钟左右。PS:最好不要在编译过程中再去做别的什么事,整个过程CPU都是满载的,要是莫名终止了,后面麻烦事也不少。

另外使用gcc-4.6.2还有如下方法:
备份原始的gcc 和 g++
# cp /usr/bin/gcc /usr/bin/gcc.bak
# cp /usr/bin/g++ /usr/bin/g++.bak

7.安装:

建立软链接
# cd /usr/bin
# ln -s /usr/local/gcc-4.6.2/bin/gcc gcc
# ln -s /usr/local/gcc-4.6.2/bin/g++ g++

编译结束以后,我们就可以执行安装了:

使用后还原即可

make install

出错处理:
make过程中报错
checking for suffix of object files... configure: error: in `/data/src/gcc/gcc-4.6.2/x86_64-unknown-linux-gnu/libgcc':
configure: error: cannot compute suffix of object files: cannot compile
See `config.log' for more details.
make[2]: *** [configure-stage1-target-libgcc] Error 1
make[2]: Leaving directory `/data/src/gcc/gcc-4.6.2'
make[1]: *** [stage1-bubble] Error 2
make[1]: Leaving directory `/data/src/gcc/gcc-4.6.2'
make: *** [all] Error 2

上面的都是写常规操作,下面是遇到的坑,

原因修改ld.so.conf后未执行ldconfig 新加的库未起效

braced spec is invalid

具体的问题提示%:sanitize(xxx)``错误``,非法。

这个问题``google``了一下午,发现解决方法就只有一种,那就是将``specs``中的``%``:``sanitize(xxx)``统统改为``fsanitize=xxx``。

还有就是安装完成后``,我在我笔记本上输入``gcc -v``提示的是``5.4``。但是``centos7``这个奇葩,还要设置别的东西,要记得建立软连接:

sudo ln -s /usr/local/gcc-4.5.0/bin/gcc /usr/bin/gcc
  sudo ln -s /usr/local/gcc-4.5.0/bin/g++ /usr/bin/g++

参考资料:

1. gcc安装问题   在Linux下安装多个版本的gcc

2. Fatal error during GCC 4.9.2 build

3. Linux编译安装GCC-5.1.0

 

推荐阅读:

Ubuntu 12.04嵌入式交叉编译环境arm-linux-GCC搭建过程图解 http://www.linuxidc.com/Linux/2013-06/85902.htm

Ubuntu 12.10安装交叉编译器arm-none-linux-gnueabi-GCC http://www.linuxidc.com/Linux/2013-03/82016.htm

Ubuntu下Vim+GCC+GDB安装及使用 http://www.linuxidc.com/Linux/2013-01/78159.htm

Ubuntu下两个GCC版本切换 http://www.linuxidc.com/Linux/2012-10/72284.htm

更多CentOS相关信息见CentOS 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=14

澳门新濠3559 1

编辑:操作系统 本文来源:今天我们就来说说GCC的编译安装,【澳门新濠3

关键词: