当前位置:首页 > 计算机科学 > 网络技术 > 正文内容

centos7中gcc 10的安装

fanglong2020-09-02网络技术2090

1.全编译安装(截止20200902最新版比较适合大陆自行搭建测试)

转摘自网络

# 如果内存偏小的比如4G以下的,加大交换分区容量,查看 http://loulin.bid/9.html 

# 典型错误1: g++: internal compiler error: Killed (program cc1plus)

# 典型错误2:make[3]: *** [s-recog] Error 137等等

yum -y install make gcc-c++  gcc-gnat libgcc  glibc-devel bison flex texinfo build-essential  wget gcc m4 zip glibc-static  bzip2  tmux

mkdir /home/gcc                                             #创建目录/data/gcc

cd /home/gcc

wget ftp://ftp.gnu.org/gnu/automake/automake-1.16.2.tar.gz  # 下载  http://ftp.gnu.org/gnu/automake/

wget https://gmplib.org/download/gmp/gmp-6.2.0.tar.gz       #依赖下载gmp 版本获取  https://gmplib.org/download/gmp/ 

wget http://www.mpfr.org/mpfr-current/mpfr-4.1.0.tar.gz     #依赖下载mpfr 版本获取 https://www.mpfr.org/mpfr-current/ 

wget ftp://ftp.gnu.org/gnu/mpc/mpc-1.2.0.tar.gz             #依赖下载mpc 获取  ftp://ftp.gnu.org/gnu/mpc/ 

wget http://ftp.gnu.org/gnu/gcc/gcc-10.2.0/gcc-10.2.0.tar.gz   #下载gcc   获取 http://ftp.gnu.org/gnu/gcc/ 

# http://dl.loulin.bid:88/linux/package/gcc/gcc-10.1.0.tar.gz

#内存太小的4G以下,建议使用yum安装方式安装,文后有介绍.

tar zxvf automake-1.16.2.tar.gz

cd automake-1.16.2

./configure --prefix=/usr/local/automake

make -j  #低配慎用参数

make install 

#rpm -e --nodeps automake

#如果有卸载老版本,没有删除 rm -rf /usr/bin/automake

# rm -rf /usr/local/automake

ln -s /usr/local/automake/bin/automake /usr/bin/automake

#edit export path

echo "export PATH=$PATH:/usr/local/automake/bin" >> /etc/profile

echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/gcc/mpc/lib:/usr/local/gcc/gmp/lib:/usr/local/gcc/mpfr/lib" >> /etc/profile

source /etc/profile

cd ..

tar zxvf gmp-6.2.0.tar.gz

cd gmp-6.2.0

./configure --prefix=/usr/local/gcc/gmp --build=x86_64-linux

make -j && make install

cd ..

tar -zxvf mpfr-4.1.0.tar.gz

cd mpfr-4.1.0

./configure --prefix=/usr/local/gcc/mpfr --with-gmp=/usr/local/gcc/gmp

make -j && make install

cd ..

tar -zxvf mpc-1.2.0.tar.gz

cd mpc-1.2.0

./configure --prefix=/usr/local/gcc/mpc --with-gmp=/usr/local/gcc/gmp -with-mpfr=/usr/local/gcc/mpfr

make -j && make install

cd ..

tar -zxvf gcc-10.2.0.tar.gz

cd gcc-10.2.0

./configure --prefix=/usr/local/gcc --enable-threads=posix --disable-checking --enable-bootstrap --enable--long-long --disable-multilib --enable-languages=c,c++ --with-gmp=/usr/local/gcc/gmp --with-mpfr=/usr/local/gcc/mpfr --with-mpc=/usr/local/gcc/mpc

make -j  && make install

#备份并创建软连接

mv /usr/bin/gcc /usr/bin/gcc-bak

mv /usr/bin/g++ /usr/bin/g++-bak

mv /usr/bin/c++ /usr/bin/c++-bak

ln -s /usr/local/gcc/bin/gcc /usr/bin/gcc

ln -s /usr/local/gcc/bin/c++ /usr/bin/c++

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

rm /usr/lib64/libstdc++.so.6

ln -s /usr/local/gcc/lib64/libstdc++.so.6.0.28 /usr/lib64/libstdc++.so.6

echo "export PATH=/usr/local/gcc/bin:$PATH" >> /etc/profile

source /etc/profile


2.减少依赖编译安装(适合非大陆环境)

# 使用自带的检查安装依赖

yum -y install make gcc-c++ gcc glibc-static  bzip2 wget tmux

mkdir /home/gcc                                             #创建目录/home/gcc

cd /home/gcc

wget http://ftp.gnu.org/gnu/gcc/gcc-10.2.0/gcc-10.2.0.tar.gz

tar -zxvf gcc-10.2.0.tar.gz

cd gcc-10.2.0

./contrib/download_prerequisites

./configure --prefix=/usr/local/gcc --enable-threads=posix --enable-checking=release --enable-languages=c,c++ --disable-multilib --enable-bootstrap --enable--long-long

make -j     # 低配使用make就好了

make install

#配置

mv /usr/bin/gcc /usr/bin/gcc-4.8.5

mv /usr/bin/g++ /usr/bin/g++-4.8.5

alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8.5 10 --slave /usr/bin/g++ g++ /usr/bin/g++-4.8.5

alternatives --install /usr/bin/gcc gcc /usr/local/gcc/bin/gcc-10.2.0 20 --slave /usr/bin/g++ g++ /usr/local/gcc/bin/g++-10.2.0

alternatives --config gcc  #选择 最新版本即可

echo "export PATH=/usr/local/gcc/bin:$PATH" >> /etc/profile  #添加环境变量

source /etc/profile


ln -sv /usr/local/gcc/include/ /usr/include/gcc # 添加头文件链接


vi /etc/ld.so.conf     #库文件


/lib

/lib64

/usr/lib

/usr/lib64

/usr/local/lib

/usr/local/lib64

/usr/local/gcc/lib

/usr/local/gcc/lib64

/usr/local/gcc/gmp/lib

/usr/local/gcc/mpc/lib

/usr/local/gcc/mpfr/lib


# echo "/usr/local/gcc/lib64" >> /etc/ld.so.conf.d/gcc.conf



ldconfig -v #生成库文件缓存

ldconfig -p |grep gcc



strings /usr/lib64/libstdc++.so.6 | grep GLIBC

ll /usr/lib64/libstdc++.so.6    $ lrwxrwxrwx 1 root root 19 Aug 23 11:57 /usr/lib64/libstdc++.so.6 -> libstdc++.so.6.0.19

rm -f /usr/lib64/libstdc++.so.6

ln -s /usr/local/gcc/lib64/libstdc++.so.6.0.28 /usr/lib64/libstdc++.so.6

strings /usr/lib64/libstdc++.so.6 | grep GLIBC


3.yum安装gcc(简单易上手)

# 查看gcc版本,centos7.*默认安装4.8.5

gcc -v

# 升级gcc到5及以上,yum list devtoolset,需要某个版本,修改devtoolset版本号即可;

yum -y install centos-release-scl

yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils

scl enable devtoolset-9 bash

# 需要注意的是scl命令启用只是临时的,退出shell或重启就会恢复原系统gcc版本。

# 如果要长期使用gcc 9.3使用下面命令,退出shell重新打开也是新版的gcc

echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile

gcc -v


4.编译参数说明

--prefix=/usr/local/ 指定安装路径


--enable-bootstrap 这里引用网上一些文献对该参数的解释:用第一次编译生成的程序进行第二次编译,然后用再次生成的程序进行第三次编译,并且检查比较第二次和第三次结果的正确性,也就是进行冗余的编译检查工作。 非交叉编译环境下,默认已经将该值设为 enable,可以不用显示指定;交叉编译环境下,需要显示将其值设为 disable。


--enable-checking=release 以软件发布版的标准来对编译时生成的代码进行一致性检查;设置该选项为 enable并不会改变编译器生成的二进制结果,但是会导致编译的时间增加;该选项仅支持gcc编译器; 总体而言,对于上面这个选项,机器的硬件配置较低,以及不愿等待太久编译时间的童鞋,可以设置为 disable;但是这会增加产生未预期的错误的风险,所以应该慎用。 可以同时设置 --disable-bootstrap 与 --disable-checking,这对编译过程的提速很有帮助。


--enable-threads=posix 顾名思义,启用posix标准的线程支持 ,要让程序能在符合POSIX规范的linux发布版上正确运行,就应该启用该选项,取决于宿主或目标操作系统的类型,其它可用值有:aix,dec,solaris,win32等,如果你是其它的类UNIX系统,就需要设置相应的值。


--enable-languages=c,c++ 支持的高级语言类型和运行时库,可以设置的所有语言包括 ada,c,c++,Fortran,java,objc,obj-c++,GO 等语言。这里只开启了c和c++,因为支持的语言越多,就需要安装越多的相应静态与动态库,还有五花八门的依赖库,这会让管理变得困难,体积也会变得庞大。


--disable-multilib 如果你的操作系统是32位,默认就已经设置为 disable,这意味着gcc仅能生成32位的可执行程序;如果你的操作系统是64位,默认就已经设置为 enable,这意味着用gcc编译其它源文件时可以通过 -m32 选项来决定是否生成32位机器代码。如果在64位系统上,要禁止生成32位代码, 设置 --disable-multilib。


--enable-gather-detailed-mem-stats 允许收集详细的内存使用信息,如果设置该参数为 enable,则将来编译好的gcc可执行程序,可以通过 -fmem-report 选项来输出编译其它程序时的实时内存使用情况。


--with-long-double-128 指定 long double 类型为128位(16字节!);设置为 without,则 long double类型将为64位(8字节),这将与普通的 double 类型一样。 基于 Glib 2.4以上版本编译时,默认已经是128位。


扫描二维码推送至手机访问。

版权声明:本文由人从众的博客发布,如需转载请注明出处。

本文链接:http://loulin.bid/51.html

分享给朋友:

相关文章

一键搭建WEB环境脚本推荐

windows平台用作服务器站长已经不常使用(授权,效率)了,但是还是推荐一下.phpstudy  https://www.xp.cn/ phpts   htt...

Mysql 修改实例数据库下的所有表引擎

1. 修改单个表mysql> ALTER TABLE TABLENAME ENGINE=InnoDB2. 修改多表mysql>select ...

如何查看已经安装的nginx、apache、mysql和php的编译参数

1、nginx编译参数:$ nginx -V#注意:需保证nginx在环境变量中,或者使用绝对路径的形式:your_nginx_dir/sbin/nginx -V2、apache编...

把你的网站搬回家吧!(第一版2015年)

适用于上网有公网IP分配的人,移动可以申请光纤,电信,联通一般只封掉80和8080.所以443大有可为!免费申请SSL证书地址:1.StartSSL(https://www.startssl.com/...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。