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
选择只安装
c
和
c++
,可以让后面
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/
- linux ubuntu 安装最新版gcc
- linux,ubuntu,linuxmint完美安装最新版qq
- Ubuntu Linux gcc 安装 使用方法
- Ubuntu arm-linux-gcc 安装
- arm-linux-gcc(ubuntu)安装
- Linux环境下最新版GCC安装总结--详细说明附案例(CentOS下安装最新版GCC 5.3.0)
- ubuntu安装firefox最新版
- Ubuntu安装Chrome最新版
- ubuntu 安装最新版docker
- mongodb 截止20161128最新版linux Ubuntu安装包
- GCC在Ubuntu Linux下的安装
- ubuntu下arm-linux-gcc的安装
- Ubuntu linux-gcc安装与编译
- ubuntu下arm-linux-gcc安装
- ubuntu 10.04 安装arm-linux-gcc
- Ubuntu下arm-linux-gcc的安装
- 在Ubuntu中安装 arm-linux-gcc
- Ubuntu安装gcc-arm-linux-gnueabi
- THREE.js 第一部分 canvas_ascii_effect.html 内容分析
- 使用Aliplayer在微信中播放视频的正确姿势
- 修改Android签名证书keystore的密码、别名alias以及别名密码
- 201709经典博客收藏
- 新电脑的些配置
- linux ubuntu 安装最新版gcc
- 数学的游戏,我也来试试
- 移动端h5图片上传
- JAVA基础(37) 如何解决SecureRandom性能问题
- request/response学习笔记
- 使用阿里云市场使用镜像建站时,如何选择特价云服务器ECS
- flume使用之exec source收集各端数据汇总到另外一台服务器
- java基础-------不使用第三个参数实现两数交换
- 在进行网站开发时应该怎么选择域名