RHEL 4.7 (64bit) 环境安装 GCC 4.6 测试记录 (更新至gcc-4.6.1)

下载GCC 4.6 及其依赖源码包:

gcc-4.6.0.tar.gz

gmp-5.0.2.tar.bz2

mpfr-3.0.1.tar.bz2

mpc-0.9.tar.gz

具体下载地址可找Google问问看。

安装环境为一台装有 RHEL4.7 的PC服务器

### 主机配置信息检查

 [root@Linux bin]# cat /etc/issue

Red Hat Enterprise Linux AS release 4 (Nahant Update 7)

Kernel \r on an \m

[root@Linux bin]# cat /proc/version

Linux version 2.6.9-78.ELsmp (brewbuilder@ls20-bc2-14.build.redhat.com) (gcc version 3.4.6 20060404 (Red Hat 3.4.6-10)) #1 SMP Wed Jul 9 15:46:26 EDT 2008

[root@Linux bin]# uname -r

2.6.9-78.ELsmp

[root@Linux bin]# grep "model name" /proc/cpuinfo

model name      : Intel(R) Xeon(R) CPU           E5504  @ 2.00GHz

model name      : Intel(R) Xeon(R) CPU           E5504  @ 2.00GHz

model name      : Intel(R) Xeon(R) CPU           E5504  @ 2.00GHz

model name      : Intel(R) Xeon(R) CPU           E5504  @ 2.00GHz

[root@Linux bin]# grep MemTotal /proc/meminfo

MemTotal:     16410740 kB

[root@Linux bin]# getconf LONG_BIT

64

### End Of 主机配置信息检查

 cd ../gcc-toolkit/

 mkdir gmp-build

 mv gmp-5.0.2.tar.bz2 gmp-build/

 cd gmp-build/

 tar -jxvf gmp-5.0.2.tar.bz2 

 cd gmp-5.0.2

 ./configure --prefix=/usr/local/gmp-5.0.2

 make 

 make install

 tar -jxvf mpfr-3.0.1.tar.bz2 

 cd mpfr-3.0.1

 ./configure --prefix=/usr/local/mpfr-3.0.1 --with-gmp=/usr/local/gmp-5.0.2

 make

 make install

 tar -zxvf mpc-0.9.tar.gz 

 cd mpc-0.9

 ./configure --prefix=/usr/local/mpc-0.9 --with-gmp=/usr/local/gmp-5.0.2 --with-mpfr=/usr/local/mpfr-3.0.1

 make

 make install

 tar -zxvf gcc-4.6.0.tar.gz 

 cd gcc-4.6.0

./configure --prefix=/usr/local/gcc-4.6.0 --enable-threads=posix --disable-checking --disable-multilib --enable-languages=c,c++ --with-gmp=/usr/local/gmp-

5.0.2 --with-mpfr=/usr/local/mpfr-3.0.1 --with-mpc=/usr/local/mpc-0.9

注意此处环境变量一定要配置好,否则下一步make操作到一半就要后悔了,俺中午吃饭前没配这个变量,直接敲了make就去吃饭了,回来发现出错了。

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/gmp-5.0.2/lib:/usr/local/mpfr-3.0.1/lib:/usr/local/mpc-0.9/lib/

echo $LD_LIBRARY_PATH

make

此处源码编译的时间约为1个小时(我是在服务器上编译的,你如果用小本本编译就得等等了)

make install

顺利完成安装后检查一下目标服务路径中的文件及程序版本号

cd /usr/local/gcc-4.6.0/bin

[root@Linux bin]# ll

总用量 7632

-rwxr-xr-x  4 root root 955060  5月 26 13:21 c++

-rwxr-xr-x  1 root root 952539  5月 26 13:21 cpp

-rwxr-xr-x  4 root root 955060  5月 26 13:21 g++

-rwxr-xr-x  3 root root 950644  5月 26 13:21 gcc

-rwxr-xr-x  1 root root 125137  5月 26 13:21 gcov

-rwxr-xr-x  4 root root 955060  5月 26 13:21 x86_64-unknown-linux-gnu-c++

-rwxr-xr-x  4 root root 955060  5月 26 13:21 x86_64-unknown-linux-gnu-g++

-rwxr-xr-x  3 root root 950644  5月 26 13:21 x86_64-unknown-linux-gnu-gcc

-rwxr-xr-x  3 root root 950644  5月 26 13:21 x86_64-unknown-linux-gnu-gcc-4.6.0

[root@Linux i686]# gcc -v

使用内建 specs。

COLLECT_GCC=gcc

COLLECT_LTO_WRAPPER=/usr/local/gcc-4.6.0/libexec/gcc/x86_64-unknown-linux-gnu/4.6.0/lto-wrapper

目标:x86_64-unknown-linux-gnu

配置为:./configure --prefix=/usr/local/gcc-4.6.0 --enable-threads=posix --disable-checking --disable-multilib --enable-languages=c,c++ --with-

gmp=/usr/local/gmp-5.0.2 --with-mpfr=/usr/local/mpfr-3.0.1 --with-mpc=/usr/local/mpc-0.9

线程模型:posix

gcc 版本 4.6.0 (GCC) 

[root@Linux i686]# g++ -v

使用内建 specs。

COLLECT_GCC=g++

COLLECT_LTO_WRAPPER=/usr/local/gcc-4.6.0/libexec/gcc/x86_64-unknown-linux-gnu/4.6.0/lto-wrapper

目标:x86_64-unknown-linux-gnu

配置为:./configure --prefix=/usr/local/gcc-4.6.0 --enable-threads=posix --disable-checking --disable-multilib --enable-languages=c,c++ --with-

gmp=/usr/local/gmp-5.0.2 --with-mpfr=/usr/local/mpfr-3.0.1 --with-mpc=/usr/local/mpc-0.9

线程模型:posix

gcc 版本 4.6.0 (GCC) 

环境变量配置(想换用GCC4.6为默认编译器就把这些变量配置到/etc/profile里面去)

export GCC46_HOME=/usr/local/gcc-4.6.0

export CPLUS_INCLUDE_PATH=$GCC46_HOME/include:$GCC46_HOME/include/c++/4.6.0

export LIBRARY_PATH=/usr/local/gmp-5.0.2/lib:/usr/local/mpfr-3.0.1/lib:/usr/local/mpc-0.9/lib:$GCC46_HOME/lib64:$GCC46_HOME/lib:$GCC46_HOME/lib/gcc/x86_64-

unknown-linux-gnu/4.6.0

export LD_LIBRARY_PATH=/usr/local/gmp-5.0.2/lib:/usr/local/mpfr-3.0.1/lib:/usr/local/mpc-0.9/lib:$GCC46_HOME/lib64:$GCC46_HOME/lib:

$GCC46_HOME/lib/gcc/x86_64-unknown-linux-gnu/4.6.0

export PATH=$GCC46_HOME/bin:$PATH

gcc 编译测试(一段自打印程序):

[root@Linux cpp-sourcekit]# gcc -o testc testc.c 

testc.c: 在函数‘main’中:

testc.c:1:9: 警告:隐式声明与内建函数‘printf’不兼容 [enabled by default]

testc.c:1:22: 警告:赋值时将指针赋给整数,未作类型转换 [enabled by default]

testc.c:1:1: 警告:传递‘printf’的第 1 个参数时将整数赋给指针,未作类型转换 [enabled by default]

testc.c:1:1: 附注:需要类型‘const char *’,但实参的类型为‘int’

[root@Linux cpp-sourcekit]# ./testc

main(a){printf(a,34,a="main(a){printf(a,34,a=%c%s%c,34);}",34);}[root@Linux cpp-sourcekit]

g++ 编译测试:

#include <iostream>

using namespace std;

int main(int argc, char** argv)

{

        cout << "Yeah g++ 4.6!"<< endl;

        cout << "Compiled by Michael Chen from Creaway Automation." << endl;

        return 0;

}

[root@Linux cpp-sourcekit]# g++ -o test test.cpp

[root@Linux cpp-sourcekit]# ./test 

Yeah g++ 4.6!

Compiled by Michael Chen from Creaway Automation.

OK, 到此顺利完成GCC4.6的安装和测试。

===========================

6月30日继续在上述环境基础之上,也就是在gcc4.6的环境中编译4.6.1的gcc源码包

将下载的gcc-4.6.1.tar.gz 源码包上传到配置好gcc-4.6.0的rhel4.7服务器,解压源码包:

tar -zxvf gcc-4.6.1.tar.gz 

cd gcc-4.6.1

./configure --prefix=/usr/local/gcc-4.6.1 --enable-threads=posix --disable-checking --disable-multilib --enable-languages=c,c++ --with-gmp=/usr/local/gmp-5.0.2 --with-mpfr=/usr/local/mpfr-3.0.1 --with-mpc=/usr/local/mpc-0.9

make

---此次编译时间仍然是1小时多4分钟左右,感觉编译效率上相比之前版本的编译器没有任何提高。

make install

安装完成后,参照上次的配置修改/etc/profile文件:

vi /etc/profile

export GCC46_HOME=/usr/local/gcc-4.6.1
export CPLUS_INCLUDE_PATH=$GCC46_HOME/include:$GCC46_HOME/include/c++/4.6.1
export LIBRARY_PATH=/usr/local/gmp-5.0.2/lib:/usr/local/mpfr-3.0.1/lib:/usr/local/mpc-0.9/lib:$GCC46_HOME/lib64:$GCC46_HOME/lib:$GCC46_HOME/lib/gcc/x86_64-unknown-linux-gnu/4.6.1
export LD_LIBRARY_PATH=/usr/local/gmp-5.0.2/lib:/usr/local/mpfr-3.0.1/lib:/usr/local/mpc-0.9/lib:$GCC46_HOME/lib64:$GCC46_HOME/lib:$GCC46_HOME/lib/gcc/x86_64-unknown-linux-gnu/4.6.1

export PATH=$GCC46_HOME/bin:$PATH

exit

退出重登陆

logon

检查gcc版本号:

gcc -v

使用内建 specs。
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/gcc-4.6.1/libexec/gcc/x86_64-unknown-linux-gnu/4.6.1/lto-wrapper
目标:x86_64-unknown-linux-gnu
配置为:./configure --prefix=/usr/local/gcc-4.6.1 --enable-threads=posix --disable-checking --disable-multilib --enable-languages=c,c++ --with-gmp=/usr/local/gmp-5.0.2 --with-mpfr=/usr/local/mpfr-3.0.1 --with-mpc=/usr/local/mpc-0.9
线程模型:posix
gcc 版本 4.6.1 (GCC)

编译测试代码:

#include <iostream>
using namespace std;
int main(int argc, char** argv)
{
        char hostname[256];
        gethostname(hostname, sizeof(hostname));
        cout << hostname << endl;
        cout << "Yeah g++ version: "<< __VERSION__ <<endl;
        cout << "源文件: "<< __FILE__ << endl;
        cout << "编译日期: "<< __DATE__ << endl;
        cout << "编译时间: "<< __TIME__ << endl;
        cout << "Compiled by Michael Chen from "<< endl << "Creaway Automation Engineering Co., Ltd. " << endl;
        return 0;
}
[root@gcc gcc]# g++ -o test test.cpp
[root@gcc gcc]# ./test
gcc
Yeah g++ version: 4.6.1
源文件: test.cpp
编译日期: Jun 30 2011
编译时间: 12:16:38
Compiled by Michael Chen from 
Creaway Automation Engineering Co., Ltd.

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java呓语

架构·微服务架构·ANDROID 源码分析(二)

上一篇的文章架构·微服务架构详细描述微服务架构相关的理论基础,为这一篇文章打好了理论基础。这篇文章将站在 Android Framework 设计者的角度上,剖...

822
来自专栏王大锤

iOS AFNetworking “Request failed: unacceptable content-type: text/html”问题

4137
来自专栏猿天地

spring cloud gateway 全局过滤器

全局过滤器作用于所有的路由,不需要单独配置,我们可以用它来实现很多统一化处理的业务需求,比如权限认证,IP访问限制等等。

7442
来自专栏Java后端技术

使用Spring Task轻松完成定时任务

  最近项目中需要使用到定时任务进行库存占用释放的需求,就总结了如何使用Spring Task进行简单配置完成该需求,本文介绍Spring3.0以后自定义开发的...

912
来自专栏Kirito的技术分享

从Feign使用注意点到RESUFUL接口设计规范

最近项目中大量使用了Spring Cloud Feign来对接http接口,踩了不少坑,也产生了一些对RESTFUL接口设计的想法,特此一篇记录下。 Sprin...

5977
来自专栏菩提树下的杨过

spring cloud:Edgware.RELEASE版本hystrix超时新坑

升级到Edgware.RELEASE发现,zuul中不管如何设置hystrix的超时时间均不起作用,仍然是默认的1000ms.  降回低版本后正常,但是低版本的...

29010
来自专栏Ryan Miao

SpringCloud学习5-如何创建一个服务提供者provider

1283
来自专栏代码GG之家

android native内存检测方案(二)

android native 代码内存泄露 定位方案(一) 什么是 AddressSanitizer clang 是一个 C、C++、Objective-C 编...

76810
来自专栏haifeiWu与他朋友们的专栏

Netty实战之第一个应用

作为一个正在Java路上摸爬滚打的小菜鸡,之前在项目中也用过Netty,也因为Netty报名阿里的中间件大赛,但终究功力太浅,最终不了了之,最近工作中又遇到了N...

1752
来自专栏杨建荣的学习笔记

memory_target设置不当导致数据库无法启动的问题(r3笔记第38天)

今天在做一个问题排查的时候碰到了另外一个有些“奇怪的”问题。 我们在测试库中已经禁用了SGA自动存储管理,结果在spfile文件里丢掉了shared_pool_...

3636

扫码关注云+社区

领取腾讯云代金券