【真】Linux升级GCC 4.8.1清晰简明教程(Ubuntu 12.04 64位版为例)
来源:互联网 发布:程序员的思维修炼.pdf 编辑:程序博客网 时间:2024/05/17 03:16
前言:
上次在CentOS 6上升级GCC 4.7.2的教程(http://blog.csdn.net/yanxiangtianji/article/details/8365630)由于本人但是能力有限,而且时间比较紧,很多东西没有深究,导致教程里面有一些冗杂和不太正确或不能通用的部分,(还被师妹说我有意误导她,冤枉啊),向大家道歉。
这次我在Ubuntu 12.04 LTS 64位版上更新gcc,发现了原来的一些问题,这次没有什么时间上的压力,我比较认真地去查阅了官方文档,也参考了一些网上的帖子,对整个升级过程在依赖包的安装、不同Linux流派、32和64位下的区别和共同点有了更深的认识。
现总结如下:
PS:不标注出处的转载是可耻的。
(我整理了Ubuntu 12.04下的shell命令,如果你很忙的话,可以只把里面的shell代码复制出来执行)
基本过程:
流程:
一,安装依赖库与工具
工具:
apt-get install build-essential
apt-get install gcc g++ make libc6-dev的方式来安装,以避免一些恶心的问题,还可以确保相应工具的安装。
库:
操作:
locate libXXX
2,安装(如果第一步发现某个库已经装了自然就不用再装啦):
./contrib/download_prerequisites来下载并解压,并创建符号连接。(如果下载缓慢,可以修改脚本中的下载地址到其他gnu镜像,注意修改版本号,根据官网的说明更高的版本不会引发其他问题)
apt-get intall libisl-dev libcloog-isl3在具体环境下可能需要修改库的名字,这一点可以通过在输入完libisl或libcloog后按两下Tab键来查看,后同。
apt-get install gcc-multilib g++-multilibFedora下可以使用:
apt-get install glibc-devel.i686 libstdc++-devel.i686
Ubuntu下也可以借鉴这个模式,修改包名安装相应的包。
二,配置(configure)
1,建立编译目录
mkdir buildcd build
2,配置
--with-mpfr
--with-mpc
--with-isl
--with-cloog
--with-gmp-include
--with-gmp-lib
../configure --prefix=/usr/local --disable-multilib --enable-languages=c,c++
../configure --prefix=/usr --enable-languages=c,c++ --with-gmp=/usr/gmp-5.1.3
3,检查
三,编译(make)
sudo make -j4对于更好的机器-j后面的数字可以更大一些(有说法是CPU核心数的两倍,但实测表明gcc的编译工作的可并行度不是很高)。
sudo make install将编译好的可执行文件install到configure时候配置的路径里面。
1,gcc 不支持make unintall,覆盖请谨慎。
四,后继工作
如果希望共存两个版本的gcc,使用的时候自然可以通过输入完整路径来致命调用哪个gcc,但是这样比较复杂。
建议通过update-alternatives 来让系统知道当我们只输入gcc的时候,是希望调用哪一个(关于update-alternatives的详细用法请百度):
例如:我新编译的gcc的路径为/usr/local/bin/gcc,我给它一个值为100的优先级:
sudo update-alternatives --install /usr/bin/gcc gcc /usr/local/bin/gcc 100然后通过
sudo update-alternatives --config gcc
来查看两个gcc中系统选中了哪个(auto情况下是选中优先级高的),如果auto选中的不是我们要的,可以增加优先级或者手工制定默认的。
Ubuntu下的shell命令总结:
sudo apt-get install gcc g++ makesudo apt-get install libisl-dev libcloog-isl-dev#若希望在64位系统下编译出32位应用程序(反之亦然),需要执行下面命令sudo apt-get install gcc-multilib g++-multilibsudo ./contrib/download_prerequisitessudo mkdir buildcd buildsudo ../configure --enable-languages=c,c++sudo make -j4sudo make install
在其他Linux版本:
在升级gcc个过程中,主要区别就在于包的名字和包管理器的不同。
Ubuntu系(Debian)的包名和RedHat系(CentOS、Fedora)的在命名规则上不太一样。前缀洗好加版本号,开发版缩写为“dev”,用“-”连接架构;而后者的开发版缩写为”devel“,用”.“连接架构。
例如在安装32位的glibc的时候所使用的报名:
On Ubuntu: libc6-dev-i386.
On Red Hat distros: glibc-devel.i686
On CentOS 5.8: glibc-devel.i386
On CentOS 6.3: glibc-devel.i686
其次Ubuntu系有很多整合了的包,例如g++-multilib,build-essential等,而ReadHat系没有。
原载于http://blog.csdn.net/yanxiangtianji
转载请注明出处
- 【真】Linux升级GCC 4.8.1清晰简明教程(Ubuntu 12.04 64位版为例)
- Linux升级GCC清晰简明教程
- CentOS 6编译升级gcc清晰简易教程(可通用大部分Linux版本)
- GCC简明教程(1)
- ubuntu 12.04 64位系统 找不到arm-linux-gcc文件
- linux:centos gcc 升级 gcc-4.8.1
- Linux(ubuntu)+gcc/g++ 升级
- Linux | Ubuntu 升级 GCC 到 gcc-5.3
- 64位ubuntu安装32位arm-linux-gcc
- 64位12.04ubuntu 安装GCC
- Ubuntu amd 64bit 安装 QQ for Linux简明教程
- Linux ubuntu 升级OpenSSL教程
- Linux(ubuntu)+gcc/g++ 升级
- 64位Ubuntu中找不到arm-linux-gcc的解决办法
- Ubuntu 14.04 64位升级搜狗拼音输入法linux版本
- 1、简明、清晰的展示
- win732位升级64位教程
- linux下升级GCC 4.8
- Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (三) —— SharePreferences
- 配置MyEclipse的WebLogic服务器
- 通用的枚举类型
- UVALive 4957 Fake scoreboard 最大流
- Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (四) —— ContentProvider
- 【真】Linux升级GCC 4.8.1清晰简明教程(Ubuntu 12.04 64位版为例)
- 疯狂java ~~国庆之后..
- 学会定义Jquery插件
- navigator.userAgent.indexOf来判断浏览器类型
- oracle join
- sublime text3设置txt文件类型也能自动补充,自动完成
- 微信打飞机源码,适配iphone5打飞机游戏源码(cocos2d-iphone:)
- C和指针 第二章
- tif 转pdf 通过iTextSharp