1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > linux gcc版本的选择 linux下gcc版本更改

linux gcc版本的选择 linux下gcc版本更改

时间:2023-09-19 20:39:33

相关推荐

linux gcc版本的选择 linux下gcc版本更改

/usr/bin/g++*查看结果如下

/usr/bin/gcc-->gcc-5, /usr/bin/gcc-5,

/usr/bin/gcc-ar-5,

/usr/bin/gcc-ar-->gcc-ar-5,

/usr/bin/gcc-nm-->gcc-nm-5

/usr/bin/gcc-ranlib-->gcc-ranlib-5, /usr/bin/gcc-ranlib-5.

由于CUDA8.0中要求gcc版本为gcc5.3.1虽然不知道不更改会出现什么情况,但为了保险起见,还是更改吧,出了问题太不容易处理了。

更改过程:

下载和解压压缩包,找不到gcc5.3.1用的gcc5.3.0

wget

/gnu/gcc/gcc-5.3.0/gcc-5.3.0.tar/gz

tar -zxvf gcc-5.3.0.tar.gz

一、安装依赖库与工具

1。工具安装,需要的工具支持c++98的编译器(g++),make,

perl,解压工具(tar,gzip等),Binutiles

只要确认本机安装有g++, gcc本步可跳过,否则

sudo apt-get install build-essential (此步libc也一并安装了)

2。依赖库,若只安装不修改需要5个依赖库(两类)

一类(gmp,mpc,mpfr),二类(isl,cloog)

操作:(a)查看是否安装了某个库

locate

lib***(库名)若找到lib***.so说明已经安装

(b) 对于gmp,mpc,mpfr在gcc的解压目录下运行

sudo ./contrib/download_prerequisites

若下载慢,可以更改脚本中下载地址到其他的gnu镜像

(c)对于isl,cloog,可以自己编译,也可以从源上下载

sudo apt-get install libisl-dev libcloog-isl4

libcloog-isl-dev具体什么结尾可以双击Tab查看

4。安装其他的库

若希望在64位的系统下能编译32位的程序,需重新安装

sudo apt-get install gcc-multilib g++-multilib

二、配置

1、建立编译目录,用于存放编译时产生的.o文件的目录

mkdir build, cd build

2、配置

在刚建立的临时目录里调用根目录下的configure,并输入参数,各参数的含义如下

--prefix 用于配置make

install后将产生的可执行文件,库文件的根目录,若--prefix=/usr,则gcc,g++存放于/usr/bin中,lib存放于/usr/lib中默认--prefix=/usr/local

若有多个gcc,通过update-alternative来配置默认使用哪一个

--program-prefix--program-suffix 给编译出来的gcc加上前缀或后缀,如--program-prefix=my,--program-suffix=-4.8.1,则编译出来的gcc名字为"my-gcc-4.8.1"

--disable-multilib

使编译出来的gcc成为本地编译器,即生产的代码只能保证能在本机默认运行,64位系统默认关闭,所以需要先安装

gcc-multilib

--enable-language 编译出的gcc支持的语音,一般 C,C++

--with-gmp,

--with-mpfr,--with-mpc,--with-isl,--with-cloog,--with-gmp-include,--with-gmp-lib若上面的库安装了且不在标准的搜索路径,需要手动制定相应路径

--with-XXX=YYY--with-XXX-include=YYY/include

和--with-XXX-lib=YYY/lib

如64位系统,当前gcc安装于/usr/bin

../configure --prefix=/usr/local --disable-multilib

--enable-language=C,C++其结果时安装了gcc作为本地编译器,与系统的原gcc共存,支持 C和C++

../configure --prefix=/usr --enable-languages=C,C++

生成32位可执行文件覆盖原来的gcc,支持C,C++

3、检查

打开Makefile

文件同事生成的config.log文件,搜索“error”正常情况下,只会搜到一些条件信息里的error如werror和获取信息时,使用"gcc

-V"但gcc不支持-V之类的错误。

若出现include某个文件不存在需注意。

三、编译

sudo make -j等待很长时间

没有问题后,可以make check一下

##################################

此时容易出现错误

1. /bin/bash: autogen:未找到命令

解决方法: sudo apt-get install autogen

2.make[2]: **[check] error 127

解决方法: sudo make check

但是仍然会出现问题,好像也不影响后面的过程

##################################

最后没有问题,执行

sudo make

install[注:gcc不支持make uninstall 覆盖需谨慎,root权限]

四、后继工作

还不是特别懂

有两个版本的gcc,可以通过输入完整的路径来调用不建议

1、sudo rm /usr/bin/gcc(删除GCC,它只是个到gcc-4.3.2的软链接文件)

sudo ln -s /usr/bin/gcc-4.1 /usr/bin/gcc(建立GCC到gcc-4.1的软链接)

这个时候可以用gcc

-v查看当前使用的gcc版本

编译完成后可以运行以下命令修改回来

sudo rm /usr/bin/gcc

sudo ln -s /usr/bin/gcc-4.3 /usr/bin/gcc

2、建议通过update-alternatives 来让系统知道gcc调用哪一个

如设置GCC4.1和GCC4.4的可选项,在终端输入以下命令

sudo update-alternatives --install /usr/bin/g++ g++

/usr/bin/g++-4.4 40

sudo update-alternatives --install /usr/bin/g++ g++

/usr/bin/g++-4.1 40

现在设置GCC的默认版本,输入下面命令:

sudo update-alternatives --config g++

得到的结果:

There are 2choices for the alternative gcc (providing

/usr/bin/g++)。

Selection Path Priority Status

*0 /usr/bin/g++-4.4 40 auto mode

1 /usr/bin/g++-4.1 30 manual mode

2 /usr/bin/g++-4.4 40 manual mode

然后输入“1”,再查看一下g++的版本,已经变成4.1的了。

五、总结

sudo apt-get install gcc g++ make libc6-dev sudo apt-get

build-essential根据自己系统的具体情况选择安装

sudo apt-get install libisl-dev

libcloog-isl4libcloog-isl-dev

若希望64位系统能编译32位代码需要安装下面的

sudo apt-get install gcc-multilib g++-multilib

下载依赖库(gmp,mpc,mpfr)

sudo ./contrib/download_prerequisites有时下载很慢,可以从网上搜索安装包,下载,按照脚本中的代码来安装

sudo mkdir build

cd build

../configure --prefix=/usr/ --enable-languages=C,C++

生成32位可执行文件覆盖原来的gcc,支持C,C++

sudo make -j4

sudo make install

经验:

在下载安装配置依赖库后最好设置共享库

方法:sudo updatedb

locate

libgmp.so等,看其所在路径,若不在/lib或/usr/lib下,修改/etc/ld.so.conf文件将上述路径加入此文件

然后运行:sudo ldconfig

库路径的设置,修改/etc/profile或~/.bashrc文件

将gcc的安装路径/usr/bin加入搜索路径,将/usr/lib加入库路径,当然,具体路径与安装时的选项有关

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。