目录
准备
安装步骤
用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源码
解压以上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将用到这些库,但是前提是操作系统能找到它们的位置。让操作系统直到它们位置的办法,已有描述:先把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切换编译器版本
但是我的虚拟机实际情况与上述帖子的情况又有区别:
上面的帖子里,/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++的软连接