在中标麒麟上基于源码安装第二个gcc编译器

目录

准备

安装步骤

用update-alternatives 确定gcc没有在update-alternatives中注册

通过whereis 和ll 命令确定当前gcc的路径,以及属性(是软连接还是真实文件)

安装gcc7.5.0

安装m4 1.4.16

安装bison libtool gettext texinfo flex

下载 gcc7.5 mpc1.10 mpfr4.0.2 gmp6.1.2源码

解压以上4个文件

在gmp文件夹内,执行如下三条指令,完成gmp安装

在mpfr文件夹内,执行如下指令,完成mpfr安装

在mpc文件夹内,执行如下指令完成mpc安装

在gcc-7.5.0文件夹内使用configure配置

将/usr/local/lib路径加入/etc/ld.so.conf,并ldconfig

在gcc-7.5.0文件夹内make

在gcc-7.5.0文件夹内 sudo make install

使用update-alternatives切换编译器版本

检查PATH环境变量

使用(update)Alternatives配置gcc g++版本

初始状态

 向/usr/sbin/添加一个gcc的软连接

向/usr/sbin/添加g++的软连接

准备

操作系统中标麒麟

操作系统已经安装了gcc 4.9.3(不一定非要4.9.3,但是要有编译器),且支持c++编译(这点很重要,在ubuntu12.04, 14.04上,预装编译器不支持g++,于是就必须先安装build-essential和g++才能走下去

安装步骤

用update-alternatives 确定gcc没有在update-alternatives中注册

update-alternatives --display gcc

 显示没有内容,说明gcc没有在update-alternatives中注册

通过whereis 和ll 命令确定当前gcc的路径,以及属性(是软连接还是真实文件)

whereis gcc
cd /usr/bin
ll gcc

 ll gcc的输出显示“-rwxr-xr-x”,以-开头,说明是真实文件,不是软连接。

安装gcc7.5.0

安装m4 1.4.16

参见我以前的博客

安装bison libtool gettext texinfo flex

按次序安装,参见我前面的博客

下载 gcc7.5 mpc1.10 mpfr4.0.2 gmp6.1.2源码

访问Index of /gnu/gcc/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror下载gcc源码

mpc源码下载:Index of /gnu/mpc/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 

mpfr源码下载:Index of /gnu/mpfr/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 

gmp源码下载:Index of /gnu/gmp/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

解压以上4个文件

在gmp文件夹内,执行如下三条指令,完成gmp安装

./configure 
make 
sudo make install

在mpfr文件夹内,执行如下指令,完成mpfr安装

./configure 
make 
sudo make install

在mpc文件夹内,执行如下指令完成mpc安装

./configure 
make 
sudo make install

在gcc-7.5.0文件夹内使用configure配置

./configure --prefix=/opt/gcc-7.5.0 --enable-checking=release --enable-bootstrap --enable-languages=c,c++ --disable-multilib

将/usr/local/lib路径加入/etc/ld.so.conf,并ldconfig

前面安装的gmp mpfr mpc等, 都生成了.so库,放置在/usr/local/lib中。编译gcc7.5.0将用到这些库,但是前提是操作系统能找到它们的位置。让操作系统直到它们位置的办法,在前面的博客《linux下共享so文件的方法_金色熊族的博客-CSDN博客》已有描述:先把so库所在路径加入ld.so.conf,然后ldconfig

注意,以前我以为,假如在生成mpc mpfr gmp的so文件之前,我已经将/usr/local/bin加入l.so.conf并且ldconfig过,我就不需要在生成so之后再重复这个操作了。这个想法不对。尽管路径早已经写入ld.so.conf,但是新增的so 还是要在ldconfig之后生效。

在gcc-7.5.0文件夹内make

在gcc-7.5.0文件夹内 sudo make install

至此gcc安装完毕,安装路径在/opt/gcc-7.5.0

使用update-alternatives切换编译器版本

如何使用update-alternatives可参见下面两个帖子:

linux安装多个版本gcc和g++_youngqqcn的博客-CSDN博客_linux安装多个gcc

【Linux】Linux 下使用 update-alternatives 管理多版本命令_RadiantJeral的博客-CSDN博客_sudo update-alternatives

 但是我的虚拟机实际情况与上述帖子的情况又有区别:

上面的帖子里,/usr/bin里面是gcc的软连接,所以帖子作者可以通过改变这个软连接来指向不同的真实gcc。但我这里/usr/bin的gcc是真实文件,不能被update-alternatives改变。于是采取如下办法:

检查PATH环境变量

 可见,/usr/bin出现在PATH里面。但是并不是第一个。linux执行程序时,会搜索PATH的各个路径,并且是从PATH的第一个路径搜索。利用这个特点,可以把gcc的软连接建立在PATH里更靠前的路径下,比如/usr/sbin。

使用(update)Alternatives配置gcc g++版本

初始状态

gcc版本4.9.3 、/usr/sbin/下面没有gcc

 向/usr/sbin/添加一个gcc的软连接

sudo alternatives --install /usr/sbin/gcc gcc /usr/bin/gcc 40903

同理,再添加gcc-7.5的软连接 

这里要注意几点:

1) 在中标麒麟上不支持update-alternatives,但是支持alternatives

2) alternatives --install用来将不同版本的程序按照不同的优先级注册下来。其语法如下:

sudo alternatives --install 软链接路径 程序名 源程序路径 优先级

这里的名称,就是你调用gcc --version时用的"gcc" 

3) 优先级这一项,必须是一个整数,且开头不能是0.数值越大,优先级越高

4) 完成install之后,配置不会立刻生效,最好重启计算机。

向/usr/sbin/添加g++的软连接

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值