编译AVX代码,升级Redhat 5.5 GCC至4.7.1
Redhat 的GCC编译器4.1版本号,为SSE4,AVX,AVX2支持不够好,官方建议4.7以上。
就这样开始了GCC升级之路。
因为Redhat 5.5它安装在一个虚拟机。全然解决,经过若干尝试,以下过程可行。
主要參考例如以下:
http://blog.sciencenet.cn/blog-714229-600604.html
http://blog.sciencenet.cn/blog-714229-600389.html
http://blog.rekfan.com/articles/13.html
GCC下载源:http://ftp.gnu.org/gnu/gcc/
yum(注冊)下载源:http://mirror.centos.org/centos-5/5.10/os/x86_64/CentOS/
一、安装GCC的依赖库
(1)install gmp
下载gmp: http://gmplib.org/
# mkdir -p /opt/gmp-4.3.2
#tar -jxvf gmp-4.3.2.tar.bz2
#cd gmp-4.3.2
#./configure --prefix=/opt/gmp-4.3.2
#make && make check && make install
(2)install mpfr
下载mpfr http://www.mpfr.org/mpfr-current/#download
#mkdir -p /opt/mpfr-2.4.2
#tar -jxvf mpfr-2.4.2.tar.bz2
#cd mpfr-2.4.2
#./configure --prefix=/opt/mpfr-2.4.2 --with-gmp=/opt/gmp-4.3.2
#make && make check && make install
(3)install mpc
下载 http://www.multiprecision.org/index.php?prog=mpc&page=download
#mkdir -p /opt/mpc-0.8.1
#tar -zxvf mpc-0.8.1.tar.gz
#cd mpc-0.8.1
#./configure --prefix=/opt/mpc-0.8.1 --with-gmp=/opt/gmp-4.3.2 --with-mpfr=/opt/mpfr-2.4.2
#make && make check && make install
(4) build gcc
#export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/gmp-4.3.2/lib:/opt/mpfr-2.4.2/lib:/opt/mpc-0.8.1/lib
二、使用Yum安装 guile
(1) 卸载rhel的默认安装的yum包
查看yum包
rpm -qa|grep yum
卸载之
rpm -qa|grep yum|xargs rpm -e --nodeps
(2) 下载新的yum包
64位linux系统下载安装包
wget http://mirror.centos.org/centos-5/5.10/os/x86_64/CentOS/yum-3.2.22-40.el5.centos.noarch.rpm
wget http://mirror.centos.org/centos-5/5.10/os/x86_64/CentOS/yum-fastestmirror-1.1.16-21.el5.centos.noarch.rpm
wget http://mirror.centos.org/centos-5/5.10/os/x86_64/CentOS/yum-metadata-parser-1.1.2-4.el5.x86_64.rpm
然后进行安装
rpm -ivh yum-*
注意:yum和yum-fastestmirror相互依赖,所以同一时候安装就可以。
(3) 下载yum的配置源
wget http://docs.linuxtone.org/soft/lemp/CentOS-Base.repo 下载到 /etc/yum.repos.d/ 文件夹以下
(4) 执行yum makecache生成缓存
(5) yum install guile
三、install
autogen
安装过程中可能缺少libxml2-devel, guile-devel, 使用yum install xx 进行升级就可以
下载 http://rpm.pbone.net/index.php3/stat/26/dist/55/size/1314516/name/autogen-5.8.9-1.el5.kb.src.rpm
.src.rpm 安装方法
#rpm -i you-package.src.rpm
#cd /usr/src/redhat/SPECS (前两步和方法一同样)
# rpmbuild -bb your-package.specs 一个和你的软件包同名的specs文件
这时,在/usr/src/redhat/RPM/i386/ (依据详细包的不同,也可能是i686,noarch等等) 在这个文件夹下,有一个新的rpm 包,这个是编译好的二进制文件。运行:
#rpm -i new-package.rpm就可以安装完毕。引用 http://blog.csdn.net/lphpc/article/details/565823
四、安装GCC4.7
(1)# mkdir -p /opt/gcc-4.7
#mkdir gcc_build (在GCC源代码文件夹下)
(2) ../configure
--prefix=/opt/gcc-4.7 -enable-threads=posix -disable-checking -disable-multilib -enable-languages=c,c++ --with-gmp=/opt/gmp-4.3.2
--with-mpfr=/opt/mpfr-2.4.2 --with-mpc=/opt/mpc-0.8.1
(3) 成功后,产生Makefile文件,然后直接make,ok-----等待-----
(4) make
install
若想又一次编译 make clean 清除上次编译遗留下的文件
uninstallation
若旧版本号是 rpm版的。查看版本号号 gcc --version 然后 rpm -e 删除了
若旧版是用源代码安装的,whereis gcc 或者 which gcc 来查看所在路径,删除就可以
接着设置工具链:
命令文件符号连接到 /usr/bin 文件夹下:
# cd /usr/bin
# ln -sv /usr/local/gcc-4.7.1/bin/gcc gcc (假设出现反复。直接删除原始gcc就可以)
# ln -sv /usr/local/gcc-4.7.1/bin/g++ g++
库文件设置:
将/usr/local/gcc-4.7.1/lib 路径加入到环境变量LD_LIBRARY_PATH中
#vi /etc/profile
加入下列代码
setenv LD_LIBRARY_PATH /usr/local/gcc-4.7.1/lib:$LD_LIBRARY_PATH
清理现场
# rm -rf gcc-4.7.1
# rm -rf gcc-b
到此安装完成
能足够 使用 gcc -v 观点4.7.1的版本号不
版权声明:本文博客原创文章,博客,未经同意,不得转载。
编译AVX代码,升级Redhat 5.5 GCC至4.7.1的更多相关文章
- GCC编译C代码
C程序的编译过程 常用文件的后缀名: gcc编译c代码 1.gcc 常用编译选项: 2.gcc编译方法 testc.c: #include <stdio.h> int main ...
- centos7.6环境zabbix3.2源码编译安装版升级到zabbix4.0长期支持版
zabbix3.2源码编译安装版升级到zabbix4.0长期支持版 项目需求: .2版本不再支持,想升级成4.0的长期支持版 环境介绍: zabbix服务端是编译安装的,数据库和web在一台机器上 整 ...
- (转载)JAVA动态编译--字节代码的操纵
在一般的Java应用开发过程中,开发人员使用Java的方式比较简单.打开惯用的IDE,编写Java源代码,再利用IDE提供的功能直接运行Java 程序就可以了.这种开发模式背后的过程是:开发人员编写的 ...
- 几款比较好用的C语言的集成开发环境及在windows下用命令行编译C代码
最近要用到C,所以尝试了这几款windows平台下比较好的IDE. VS2015:比较复杂和庞大,据说从2013版本开始支持C99标准. C-free:轻巧,但是不支持C99. vc++6.0:很多学 ...
- JD-GUI反编译后代码逻辑分析
一,用jd-gui.exe等工具查看源代码.如何你不会,可以参看此文章: http://blog.csdn.net/hp_2008/article/details/8207879 可以到以下连接下载可 ...
- 理解Babel是如何编译JS代码的及理解抽象语法树(AST)
Babel是如何编译JS代码的及理解抽象语法树(AST) 1. Babel的作用是? 很多浏览器目前还不支持ES6的代码,但是我们可以通过Babel将ES6的代码转译成ES5代码,让所有的浏览器都 ...
- 使用gulp和bable实现实时编译ES6代码
这篇文章最初发表在我自己折腾的博客站点上:使用gulp和bable实现实时编译ES6代码,该博客用了一位前辈开源的源码,基于thinkjs和vuejs开发,欢迎大家来逛逛. 问题描述> 项目开发 ...
- [UE4]使用UnrealVS扩展快速编译C++代码
一.如果UE4 编辑器已经打开,则VS中的重新生成项目将不能使用,一定要关了UE4 编辑器才可以.一般不是有VS自身的编译UE4的C++代码 二.epic提供了UnrealVS扩展,可以快速编译C++ ...
- VC6完整项目代码升级到VS2010
VC6完整项目代码升级到VS2010,有需要请联系我,专业C++开发,邮箱153786575@qq.com
随机推荐
- sails 相关文章
Node 框架之sails http://cnodejs.org/topic/555c3c82e684c4c8088a0ca1
- Android - 数据存储 -存储键值对
如果你有少量的键值数据需要存储,可以使用SharedPreferencesAPI.SharedPreferences对象指向一个包含键值对的文件并且提供了一些简单的方法来读取它们.每个SharedPr ...
- C#多线程编程实例 螺纹与窗口交互
C#多线程编程实例 螺纹与窗口交互 代码: public partial class Form1 : Form { //声明线程数组 Thread[] workThreads = new Thread ...
- 探秘Java虚拟机——内存管理与垃圾回收(转)
本文主要是基于Sun JDK 1.6 Garbage Collector(作者:毕玄)的整理与总结,原文请读者在网上搜索. 1.Java虚拟机运行时的数据区 2.常用的内存区域调节参数 -Xms:初始 ...
- java中的移位运算符:<<,>>,>>>总结(转)
java中有三种移位运算符 << : 左移运算符,num << 1,相当于num乘以2 >> : 右移运算符,num >& ...
- 红帽/CentOS ext4无法格式化大分区 补充ext4格式化方式
普通情况下,XFS出现丢数据的情况为海量小文件IO场景.在该场景下,inode占用教大. 通过上文的方式进行格式化,inode数量较小.通过大量測试,能够使用例如以下方法提升mkfs.ext4后文件系 ...
- javascript于"return obj === void 0"这样的书面理由和优势
得知underscore.js什么时候,查看源代码经常出现的类别似下面的代码: if (context === void 0) return func; if (array == null) retu ...
- SQL Server 连接问题-TCP/IP
原文:SQL Server 连接问题-TCP/IP 出自:http://blogs.msdn.com/b/apgcdsd/archive/2012/02/24/ms-sql-server-tcp-ip ...
- 读改善c#代码157个建议:建议1~3
目录: 建议一:正确操作字符串 建议二:使用默认转型方法 建议三:区别对待强制转型和as 建议一.正确操作字符串 1.确保尽量少的装箱 static void Main(string[] args) ...
- cocos2d 消除类游戏简单的算法 (一)
1. 游戏视频演示 2.三消游戏我的理解 上面视频中的游戏.我做了2个星期时间,仅仅能算个简单Demo,还有bug.特效也差点儿没有.感觉三消游戏主要靠磨.越磨越精品. 市场上三消游戏已经超级多了.主 ...