你好,游客 登录 注册 搜索
背景:
阅读新闻

Linux下编译GCC 6.2.0

[日期:2017-12-30] 来源:Linux社区  作者:oloroso [字体: ]

在Arch Linx的下gcc已经更新到6.2.1了,Win10的WSL下还是gcc4.8。官方源没有比较新的版本,于是自己编译使用。

GCC6的几个新特性
GCC 6 现在的默认值是 C++ 14. GCC 6 现在包括 C++ Concepts.
C++运行时库现在支持特殊的数学函数 (ISO/IEC 29124:2010)
支持 C++17 的实验功能

准备

可以去gnu官网下载gcc6.2.0的源码,但国内访问速度比较慢。可以进中科大的镜像站去下载。

下载并解压

wget http://mirrors.ustc.edu.cn/gnu/gcc/gcc-6.2.0/gcc-6.2.0.tar.bz2
tar -xjvf gcc-6.2.0.tar.bz2

解压之后进入源码目录,运行下面命令下载依赖包

./contrib/download_prerequisites    #必须在源码根目录下运行此命令

编译gcc前需安装build-essential,bison,flex,texinfo

生成Makefile

在源码目录下建立一个build目录(也可以在别的目录下),然后进入build目录运行configure脚本生成Makefile文件。

mkdir build && cd build
../configure --prefix=/usr/local/gcc6 --enable-checking=release --enable-languages=c,c++ --enable-threads=posix --disable-multilib
# --prefix=/usr/local/gcc6  指定安装路径
# --enable-languages=c,c++  支持的编程语言
# --enable-threads=posix    使用POSIX/Unix98作为线程支持库
# --disable-multilib        取消多目标库编译(取消32位库编译)

下面是archlinux自带gcc的编译配置命令(gcc -v查看)。

--prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.archlinux.org/ --enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++ --enable-shared --enable-threads=posix --enable-libmpx --with-system-zlib --with-isl --enable-__cxa_atexit --disable-libunwind-exceptions --enable-clocale=gnu --disable-libstdcxx-pch --disable-libssp --enable-gnu-unique-object --enable-linker-build-id --enable-lto --enable-plugin --enable-install-libiberty --with-linker-hash-style=gnu --enable-gnu-indirect-function --disable-multilib --disable-werror --enable-checking=release

如果配置的时候出现cannot find crt1.o cannot find crti.o cannot find crtn.o的错误,那么需要指定--build的参数,比如x86_64

编译安装

上一步生成Makefile没有问题后,就可以直接编译安装了。

make -j8    #使用8个线程并行编译
make install    #安装(可能需要root权限)

错误与解决办法

makeinfo没有安装

/mnt/d/gcc/gcc-6.2.0/missing: 81: /mnt/d/gcc/gcc-6.2.0/missing: makeinfo: not found
WARNING: 'makeinfo' is missing on your system.
         You should only need it if you modified a '.texi' file, or
         any other file indirectly affecting the aspect of the manual.
         You might want to install the Texinfo package:
         <http://www.gnu.org/software/texinfo/>
         The spurious makeinfo call might also be the consequence of
         using a buggy 'make' (AIX, DU, IRIX), in which case you might
         want to install GNU make:
         <http://www.gnu.org/software/make/>

解决办法

sudo apt-get install texinfo

Linux升级GCC 4.8.1清晰简明教程(Ubuntu 12.04 64位版为例)  http://www.linuxidc.com/Linux/2014-04/99583.htm 

Ubuntu 14.04 LST安装GCC 4.1.2  http://www.linuxidc.com/Linux/2016-06/132040.htm

Ubuntu 16.04 下将GCC-5.4降级到 4.8  http://www.linuxidc.com/Linux/2017-07/145502.htm

CentOS6.5升级手动安装GCC4.8.2  http://www.linuxidc.com/Linux/2015-01/112595.htm 

CentOS 6.9升级GCC至6.4.0版本  http://www.linuxidc.com/Linux/2017-10/147256.htm

Ubuntu升级GCC版本 http://www.linuxidc.com/Linux/2016-11/136840.htm

CentOS7环境下在/离线安装GCC与GCC-C++  http://www.linuxidc.com/Linux/2017-03/142319.htm

Ubuntu 16.04 LTS 降级安装GCC 4.8  http://www.linuxidc.com/Linux/2017-03/142299.htm

CentOS 编译 GCC 7.2  http://www.linuxidc.com/Linux/2017-12/149506.htm

本文永久更新链接地址http://www.linuxidc.com/Linux/2017-12/149969.htm

linux
相关资讯       gcc编译 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款