linux ubuntu 安装最新版gcc

来源:互联网 发布:c语言delay头文件 编辑:程序博客网 时间:2024/06/07 08:00

可以直接照着做,也可以看后面的调整细节



去官网提供的镜像点下源码包(最近的似乎是日本的那个)

https://gcc.gnu.org/mirrors.html



解压,假设解压到目录为source

tar -xf xxx



下载一些依赖库,直接跑这个脚本就不用手动搞了

cd source

./contrib/download_prerequisites



建一个目录用来存放临时产生的文件,假设为tmp(这里似乎要求tmp不能是source的子目录)

mkdir tmp

cd tmp



tmp目录下执行source里的configure

enable languages选择只安装cc++,可以让后面make时间短一点

disable multilib如果不写的话会提示我写,不知道干什么的

不指定--prefix的话,自动安装到默认目录下,正好替代原版本,后面就不用再改链接和path什么了

需要改的话看后面详解

source/configure --enable-languages=c,c++ --disable-multilib



-j4并行make,数字根据cpu有几核改,可以快一点,也有可能出毛病,去掉即可

make -j4



这个应该也可以并行吧?似乎makeinstall就是make加一个选项,自然可以加-j4

没有求证

sudo make install -j4



哦了,如果没有设置--prifix的话,因为安装到默认位置,正好替换了ubuntu自带的gcc,别的都不用改了

设置了的话,详见后面


注意用的时候会发现一些错误,是因为新的库没有替代旧的库,比如用 -lpthread编译出来的程序运行的时候会提示缺东西,

解决方法搜一搜一大堆,

stackoverflow的那个最高票解决方案,挺方便的,能用的话最好,我可以用这个解决。

简单来说就是把tmp/x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.xxx 那个最新版的,复制到原来的libstdc++.so.xx的目录下,然后把原来的连接到新的即可

https://stackoverflow.com/questions/5216399/usr-lib-libstdc-so-6-version-glibcxx-3-4-15-not-found


这个网页说手动更新一下,https://itbilu.com/linux/management/NymXRUieg.html







罗嗦版。。。闲着没事大略看了看官网的指导步骤。。其实完全可以直接看别人写的博客照着做



我的ubuntu自带的gcc版本是5.4.0

因为希望用c++新标准,准备装gcc最新版

ubuntu的源里没有最新版的,所以需要手动装



gcc官网安装指导

https://gcc.gnu.org/install/



提到最好安装前看看对应平台有什么须知,https://gcc.gnu.org/install/specific.html

发现 x86_64 和 linux_gnu对应的须知没什么要特别注意的



回去继续看,提到了可以看安装成功的案例。。。懒得看



继续看,说道gcc不支持uninstall功能,所以最好专门准备个地方,把gcc和相关的东西全装里面,不用了删掉整个目录即可



然后进入具体步骤,第一步前期准备https://gcc.gnu.org/install/prerequisites.html

列了一大堆依赖。。没讲别的,既然装了旧版gcc了,应该没什么大毛病,先继续,有问题了再回来看看,更新依赖



第二步,下载https://gcc.gnu.org/install/download.html

里面讲了一堆下载方式,我用的是去镜像网站下载,里面看了看。。最近的大概是日本的,进去下了最新版

然后还提到了下载下来的包自带了一个脚本,用来下载一些依赖,先不管,知道有这回事,后面再说



第三步,配置

。。贼长一个网页,详细讲了各种问题和各种可选的配置。

没啥特殊需求的话,就建一个中间目录,存放等会儿编译gcc产生的临时文件,这个目录不能是源码目录的子目录。

配置的话,懒得仔细一个一个配了,参考别人的配置,设置一下--prefix=/usr/local/gcc-x.x.x,说是toplevel installation directory,大概就是gcc真正的目录吧,刚刚那个目录是临时放编译结果的



总之。。 下载的包解压完以后,新建一个临时目录,切换进去,然后就在这个目录去configure

%mkdirobjdir

%cdobjdir

%srcdir/configure [options] [target]



发现不行,提示需要一些东西,一看,就是之前说的可以脚本自动下的东西,OK,回去运行一下那个脚本

srcdir/contrib/download_prerequisites

提示必须切换到源码目录才行。。。好好好。。。

cd srcdir

./contrib/download_prerequisites



然后继续,切到临时目录,configure

又报错,说我的系统没有32位的库,要加个--disable-multilib

行行行。。。加上再configure,总算成了

(注意可以选只编译某些语言,这次我make完了才发现,默认全选实在太慢,见https://www.cppfans.org/1719.html





第四步,make  https://gcc.gnu.org/install/build.html

网页说如果出一堆警告的话一般不用管,除非编译失败了。。

。。。。想起来一个笑话,“悬崖边上放了个牌子,写着warning,下面却摔死了一堆程序员。。因为程序员从不看warning”

然后又说了一大堆,没关系,不用玩骚操作,正常编译即可,可能时间有点长,因为默认的编译是来一全套,带测试、检查什么的



现在仍在那个目录,执行make即可

(注意可以make -jn,n根据cpu几核选)

挺慢的,查了查因为把所有语言都选上了哈哈哈,而且还可以选多进程编译,下次试试

http://www.phpfans.net/ask/fansa1/6750885187.html



第五步,测试(可以不做。。)

我选择不做。。。



第六步,最终安装https://gcc.gnu.org/install/finalinstall.html

又扯了一大堆,简单地说,切到临时目录,执行make install



执行完就算装好了,

gcc的可执行文件在之前--prefix那个文件夹的bin目录下,c++头文件在include,库在lib



官网的指导到此结束,想做的话,可以把以前gcc可执行文件的链接改到新的地方,或者改一下alias,方便使用

最好再改一下库和头文件的地址什么的,详情见http://blog.csdn.net/cybertan/article/details/8101883的第七步第八步

还有这个http://ivan4126.blog.163.com/blog/static/209491092201282011433423/



g++也要记得改







参考网页

gcc官网,以及下面几篇文章

https://www.cppfans.org/1719.html

http://blog.csdn.net/cybertan/article/details/8101883

http://ivan4126.blog.163.com/blog/static/209491092201282011433423/





原创粉丝点击