热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linux升级GCC4.8.1清晰简明教程(Ubuntu12.0464位版为例)

前言:上次在CentOS6上升级GCC4.7.2的教程(http://www.linuxidc.com/Linux/2012-12/76635.htm)由于本人但是能力有限,而且时间比较紧,很多东西没有深究,导致教程里面有一些冗杂和不太正确或不能通用的部分,(还被师妹说我误导她,冤枉啊),向大家道歉。这次我在Ubuntu12.04LTS64位版上更新gcc,发现了原来的一些问题

前言:

上次在CentOS 6上升级GCC 4.7.2的教程(http://www.linuxidc.com/Linux/2012-12/76635.htm)由于本人但是能力有限,而且时间比较紧,很多东西没有深究,导致教程里面有一些冗杂和不太正确或不能通用的部分,(还被师妹说我误导她,冤枉啊),向大家道歉。

这次我在Ubuntu 12.04 LTS 64位版上更新gcc,发现了原来的一些问题,这次没有什么时间上的压力,我比较认真地去查阅了官方文档,也参考了一些网上的帖子,对整个升级过程在依赖包的安装、不同Linux流派、32和64位下的区别和共同点有了更深的认识。

现总结如下:

PS:不标注出处的转载是可耻的。

(我整理了Ubuntu 12.04下的shell命令,如果你很忙的话,可以只把里面的shell代码复制出来执行)

基本过程:
这里对整个流程做一个概要性的介绍,让大家在做每一件事情的时候做到心中有数。
 
1,安装依赖库和工具
根据官方文档,如果只是为了编译安装而不是去修改gcc,那么所需要的库和工具并不是很多。
需要强调的有两点:
1)需要一个c++编译器,也就是说如果只有gcc而无g++,那么是无法完成这次编译的;
2)在64位系统上如果想要编译出32位的程序的话,需要额外安装相应的库(默认开启)。
 
2,配置(configure)
配置我们编译出的gcc所支持的语言,目标环境(是否为交叉编译器),依赖库路径(一定条件下可省略,下详),编译结果安装到哪里……配置程序会根据这些信息生产Makefile文件,供下一步使用。
 
3,编译(make)
根据configure生成的Makefile编译出我们的gcc和相应的lib如libstdc++等。
 
流程:
请大家多多查阅官方文档:http://gcc.gnu.org/install/
一,安装依赖库与工具
工具:
支持c++98的编译器(g++),make,perl,解压工具(tar、gzip等),Binutils(仅部分情况下需要)等。
这里一般不需要太担心,因为现在的linux系统在安装完成后,这里面的大部分工具就已经就位了,唯一需要注意的就是c/c++环境。
如果确定本机已经安装了gcc和g++那么可以跳过这一部分。
 
Unbutu下可以使用:
 
apt-get install build-essential
来方便地搞定,而且它还安装了一些其他必须的库如glibc(Ubuntu下叫libc)。

其他一些Linux平台没有build-essential这个包,稍微麻烦一点。

因为安装g++和gcc,必然会安装libstdc++和glibc,所以建议通过:

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

的方式来安装,以避免一些恶心的问题,还可以确保相应工具的安装。


库:
根据官方文档,如果只是安装不修改的话只需要5个依赖第三方库。
这个5个库分2类,一类(gmp,mpc,mpfr)是可以在gcc编译过程中自动编译的(先自行下载了源码并正确放置),另一类是需要独立安装的(isl,cloog)。
操作:
1,检查它们是否已经安装了:
如果要检查XXX库是否安装,使用:
locate libXXX

来查找,如果查找到libXXX.so文件,那么就说明这个库已经安装了。(关于库搜索路径的问题见 http://www.linuxidc.com/Linux/2012-12/76633.htm )

2,安装(如果第一步发现某个库已经装了自然就不用再装啦):

对于gmp,mpc,mpfr三个库,可以在gcc的解压根目录下运行

./contrib/download_prerequisites

来下载并解压,并创建符号连接。(如果下载缓慢,可以修改脚本中的下载地址到其他gnu镜像,注意修改版本号,根据官网的说明更高的版本不会引发其他问题)

根据gcc的编译规则:如果在gcc的根目录下有gmp,mpc,mpfr这几个目录,那么在make gcc的时候,它们会自动make,不需要手动安装。

对于isl和cloog这个两个库,可以自己编译(编译时请详细阅读官方文档),但是建议直接从源上面下载。(因为cloog依赖了gmp和isl,这就是说如果你要编译会非常麻烦。)

例如:

apt-get intall libisl-dev libcloog-isl3

在具体环境下可能需要修改库的名字,这一点可以通过在输入完libisl或libcloog后按两下Tab键来查看,后同。

3,安装其他库:

如果希望在64位系统下也能编译出32位的程序,那么还需要32位的运行库,而这些库在64位系统下默认是不会安装的。

Ubuntu下有简单的方法,可以使用:

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

Fedora下可以使用:

apt-get install glibc-devel.i686 libstdc++-devel.i686

Ubuntu下也可以借鉴这个模式,修改包名安装相应的包。


推荐阅读
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • Ubuntu 9.04中安装谷歌Chromium浏览器及使用体验[图文]
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • Vagrant虚拟化工具的安装和使用教程
    本文介绍了Vagrant虚拟化工具的安装和使用教程。首先介绍了安装virtualBox和Vagrant的步骤。然后详细说明了Vagrant的安装和使用方法,包括如何检查安装是否成功。最后介绍了下载虚拟机镜像的步骤,以及Vagrant镜像网站的相关信息。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • Ubuntu安装常用软件详细步骤
    目录1.GoogleChrome浏览器2.搜狗拼音输入法3.Pycharm4.Clion5.其他软件1.GoogleChrome浏览器通过直接下载安装GoogleChro ... [详细]
  • 本文讨论了在Linux系统中,使用chown命令将django项目目录下的static目录的拥有者从root改为eureka的问题。作者尝试了多种命令,包括chown和sudo chown等,但都没有成功修改拥有者。文章提供了相关目录的权限信息,并补充了项目所在磁盘和操作系统的信息。 ... [详细]
  • STM32与FPGA的对比及学习建议
    本文对比了野火STM32F103指南针板和Xilinx的PYNQ-Z2板(ZYNQ-7020),介绍了野火STM32F103指南针板的学习资料和讲解视频的详细程度,建议初学者学习野火的资料。同时,介绍了STM32开发所用的Keil程序和C指针的重要性。对于ZYNQ-7020的开发,提到了其自带的Linux、Ubuntu18.4系统以及使用SD卡烧入镜像的方法。 ... [详细]
  • 2016 linux发行版排行_灵越7590 安装 linux (manjarognome)
    RT之前做了一次灵越7590黑苹果炒作业的文章,希望能够分享给更多不想折腾的人。kawauso:教你如何给灵越7590黑苹果抄作业​zhuanlan.z ... [详细]
  • 本文介绍了在Ubuntu系统中清理残余配置文件和无用内容的方法,包括清理残余配置文件、清理下载缓存包、清理不再需要的包、清理无用的语言文件和清理无用的翻译内容。通过这些清理操作可以节省硬盘空间,提高系统的运行效率。 ... [详细]
author-avatar
千与千寻de秘密
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有