【源码编译gcc/g++】记一次interesting的环境配置

9 篇文章 0 订阅
8 篇文章 2 订阅

帮助其他部门的兄弟配置二次开发过的jupyter-notebook(带有登录验证码功能,具体操作在我的博客中有记载)。在部署环境的时候,出现了很多神奇的问题,再次记录一下。

yum源问题

项目的环境需要node、py3,py3好解决,node在环境中没有,于是yum安装了一下,发现报了aliyuncs.com的dns找不到…很奇葩,本着本地先解决的思路,我尝试换源,先后换了清华的源、中科大的源,都存在404的问题。最后换了163的源终于没啥问题了。每次换完记得sudo yum makecache

gcc源码编译

之前有个印象,yum安装的node版本可能不符合需要,因此我在官网下载的node的源码,准备编译。./configure后提示gcc版本在4.x,需要6.x的。于是开始折腾gcc。

试了很多文章的方法,都是基于yum安装的二进制包,都没有成功。于是我想尝试源码编译一个gcc,gnu.org的官方下载到gcc10的源码,解压,准备编译。

./configure后输出我们没有gnu的一些依赖。万幸可以用yum安装:

sudo yum install glibc-headers gcc-c++  gcc gmp  gmp-devel  mpfr  mpfr-devel  libmpc  libmpc-devel

上面的环境装好以后就可以开始编译源码了,在根目录中创建build文件夹,接着

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

这里面有一些附加的参数,贴上一段我参考的文章给出的提示,原文这里用的9.3.0,记得做替换(原文链接在文章最后,写的很棒):

configure是一个可执行脚本,它有很多选项,在待安装的源码路径下使用命令./configure –help输出详细的选项列表。其中–prefix选项是配置安装的路径。
如果不配置 --prefix 选项,安装后:
可执行文件默认放在/usr /local/bin,
库文件默认放在/usr/local/lib,
配置文件默认放在/usr/local/etc,
其它的资源文件放在/usr /local/share
configure各项参数详解:
–prefix=/usr/local/gcc-9.3.0/:把所有资源文件都放在该路径下。
–enable-checking=release:生成的编译器在编译过程中不做额外检查。
–enable-languages=c,c++:让gcc支持c,c++。
–disable-multilib:不生成编译为其他平台可执行代码的交叉编译器。

之后在build文件夹下就可以make了,这一步消耗了2个多小时才编译成功。(达成成就:使用gcc编译gcc…)(事实上我们观察makefile的输出能猜出来,我们是先构建了一个pregcc和preg++,大概是简易版,之后采用的这俩编译的最后的gcc和g++)

再之后make install即可完成。

接着需要处理环境做链接等,这里就贴出我参考文章的配置,大概步骤是先删除旧的gcc,接着做软链接,接着把dylib复制到系统默认的lib路径让gcc能够找到。

注意替换版本

  1. 删除旧版本gcc
sudo yum remove gcc

2.将新版本的gcc加入命令搜索路径中:

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

3.添加LD_LIBRARY_PATH环境变量

# gcc
LD_LIBRARY_PATH=/usr/local/gcc-10.1.0/lib
#export LD_LIBRARY_PATH

修改之后别忘了source

4.最后更换libstdc++.so.6

cp /usr/local/gcc-10.1.0/lib64/libstdc++.so.6.0.28 /usr/lib64/libstdc++.so.6.0.28
rm -f /usr/lib64/libstdc++.so.6
ln -s /usr/lib64/libstdc++.so.6.0.28 /usr/lib64/libstdc++.so.6

参考

Centos安装高版本GCC

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值