编译安装 gcc 4.9并验证使用

1. 准备环境(GCC 编译器)

centOS 6.3

cat /proc/version

Linux version 2.6.32-279.el6.x86_64 ([email protected]) (gcc version 4.4.6 20120305 (Red Hat 4.4.6-4) (GCC) ) #1 SMP Fri Jun 22 12:19:21 UTC 2012

gcc --version

gcc (GCC) 4.4.6 20120305 (Red Hat 4.4.6-4)

2. 准备文件

gcc-4.9.0.tar.gz

官网(http://gcc.gnu.org/)下载:

ftp://mirrors.kernel.org/gnu/gcc/gcc-4.9.0/gcc-4.9.0.tar.gz

http://gcc.petsads.us/releases/

3. 安装步骤

3.1. 解压 gcc-4.9.0.tar.gz

得到目录 gcc-4.9.0,进入目录

#tar -xvzf gcc-4.9.0.tar.gz

#cd gcc-4.9.0

3.2. 下载编译准备文件

主要是需要下面的库文件(需要完整版本,下载全部文件)

MPFR=mpfr-2.4.2

GMP=gmp-4.3.2

MPC=mpc-0.8.1

ISL=isl-0.12.2

CLOOG=cloog-0.18.1

执行./contrib/download_prerequisites

如果编译机器不能上网,直接打开文本文件 download_prerequisites,把里面

依赖的库下载回来后,放在指定目录,然后注释下载命令,再次执行

contrib/download_prerequisites,把相关文件解压,并建立链接。

#vi contrib/download_prerequisites

注释 wget 相关的内容,手动把这些文件下载回来,拷贝到工作目录 gcc-4.9.0下。

#./contrib/download_prerequisites

3.3. 创建编译目录并编译安装

#mkdir ../gcc-build-4.9.0

#cd ../gcc-build-4.9.0

#../gcc-4.9.0/configure --prefix=/usr/local/gcc-4.9.0 --enable-stage1-checking=release --enable-stage1-languages=c,c++,go

#make -j 4

#make install

编译后安装到  /usr/local/gcc-4.9.0

3.4. 验证安装

#cd /usr/local/gcc-4.9.0

#./bin/gcc -v

看到版本信息

...

线程模型:posix

gcc 版本 4.9.0 (GCC)

3.5. 验证编译功能(C++ 2011)

构造代码文件 test_gcc4.9.cpp,内容如下:

#include <string.h>

#include <iostream>

#include <stdio.h>

#include <thread>

#include <future>

using namespace std;

template<typename T> T stringcat(T &x,T &y)

{

std::cout<<"stringcat start...."<<endl;

x += x;

y += y;

//睡眠指定毫秒数

std::this_thread::sleep_for(std::chrono::milliseconds(1000));

std::cout<<"stringcat end...."<<endl;

return x + y;

}

template<typename T> class CTheadOperator

{

public:

//采有创建线程发起异步调用

void createthread();

};

template<typename T> void CTheadOperator<T>::createthread()

{

std::string x = "x",y = "y";

auto b = std::bind(stringcat<std::string>,x,y);

std::cout<<"createthread wait stringcat....\n";

std::thread tp(b);

tp.join();

//注意观察返回值的变化

std::cout<<"无参数被修改 "<<x<<" "<<y<<endl;

}

int main(int argc,char *argv[])

{

CTheadOperator<std::string> tp;

tp.createthread();

return 0;

}

编译执行,注意看参数 -std=c++11,-lstdc++,证明是使用新标准

查看链接的动态库,是新的库

编译后的文件可执行,执行正常

#/usr/local/gcc-4.9.0/bin/g++ -Wwrite-strings -std=c++11 test_gcc4.9.cpp -o test_gcc4.9 -I/usr/local/gcc-4.9.0/include -L/usr/local/gcc-4.9.0/lib64 -lstdc++ -fpermissive
-lpthread

#ldd test_gcc4.9

linux-vdso.so.1 =>  (0x00007fff2fbff000)

libstdc++.so.6 => /usr/local/gcc-4.9.0/lib64/libstdc++.so.6 (0x00007f94ae037000)

libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003431800000)

libm.so.6 => /lib64/libm.so.6 (0x0000003431000000)

libgcc_s.so.1 => /usr/local/gcc-4.9.0/lib64/libgcc_s.so.1 (0x00007f94ade07000)

libc.so.6 => /lib64/libc.so.6 (0x0000003430c00000)

/lib64/ld-linux-x86-64.so.2 (0x0000003430800000

#./test_gcc4.9

createthread wait stringcat....

stringcat start....

stringcat end....

无参数被修改 x y

3.6. 验证编译功能(C11),缺少 threads.h文件,编译失败

创建文件test_gcc4.9.c,内容如下:

#include <string.h>

#include <stdio.h>

//注意这行,路径不一致

#include <thr/threads.h>

//注意这个,函数定义必须是

//typedef int(*_Thrd_start_t)(void *);

int fun(void *data)

{

printf("thread=%d\n", thrd_current());

//std::map<std::string, std::string> m;

//m.insert(std::make_pair("a1", "b1"));

//auto result = m.insert(std::make_pair("a1", "b1"));

//if (result.second)

//{

//printf("m insert true %d,", thrd_current());

//std:std::cout << "key=" << result.first->first << ",value=" << result.first->second << endl;

//}

//else

//{

//printf("m insert fail %d\n", thrd_current());

//}

return 0;

}

int main(int argc,char *argv[])

{

thrd_t loc;

thrd_create(&loc, fun,0);

thrd_join(loc,0);

return 0;

}

编译执行,注意看参数 -std=c11,-lgcc_s,证明是使用新标准

查看链接的动态库,是新的库

呜呼,无法编译成功,无法执行正常!!!

#/usr/local/gcc-4.9.0/bin/gcc -Wwrite-strings -std=c11 test_gcc4.9.c -o test_gcc4.9 -I/usr/local/gcc-4.9.0/include -L/usr/local/gcc-4.9.0/lib64 -lgcc_s -lpthread;

#test_gcc4.9.c:4:21: 致命错误:threads.h:没有那个文件或目录

#include <threads.h>

^

编译中断。

时间: 2024-10-12 21:11:58

编译安装 gcc 4.9并验证使用的相关文章

CentOS 6.4中升级编译安装GCC 4.8.1 + GDB 7.6.1 + Eclipse 以及Kdump配置

在CentOS 6.4中编译安装GCC 4.8.1 + GDB 7.6.1 + Eclipse 今天在isocpp上看到"GCC 4.8.1 released, C++11 feature complete"这个消息,非常兴奋.终于有一个全面支持C++11语言特性的编译器了! 当然了,gcc仅仅是语言特性上全面支持C++11,libstdc++貌似还没有完全跟上,不过我已经挺满足了,至少可以去尝试各种特性了.另外,之前也有消息说Clang功能上也100%支持C++11了,但是内部还在做

Centos 6.9 编译安装gcc 4.8.5

前言 GCC(GNU Compiler Collection,GNU编译器合集)是linux以及其他类UNIX平台上进行开源项目,软件开发等必不可少的工具链组成之一.(其他的还有clang以及llvm等编译器) 对于程序员以及系统管理员而言,经常需要从软件的源码进行手动编译安装, 不论是configure脚本,还是make工具,最终都需要调用gcc(或者其它编译器)来进行实际的编译工作. 另外,各种软件也经常需要使用gcc的新版特性,并且与旧版gcc共存,根据实际的需求进行调用. 实验环境:VM

CentOS6.8下编译安装GCC

关于 GCC 在 CentOS 下通过 yum 安装默认版本号,CentOS 5 是 4.1.2:CentOS 6 是 4.4.7:CentOS 7 是 4.8.3.很多时候在编译安装软件都需要高版本的 GCC,否则就会报错.那么如何升级 GCC 的版本呢? 首先要确认升级到的 GCC 版本号.目前 GCC 的最新版已经到了 5.2,而 CentOS 7 则依然使用其 4.8,所以基于兼容性考虑,我选择升级到 4.8.5.GCC 官网:https://gcc.gnu.org 下面开始一步一步来编

CentOS编译安装GCC 4.9.2成功

在Linux上编译安装gcc是个寻烦恼的活,对于像我这样习惯于在Windows上面使用二进制安装包的人来说,自已编译安装gcc是个相当大的挑战,今天直接挑战最新版的gcc,是4.9.2版本的,做之前查阅了大量的资料,本次安装使用的系统是CentOS6.4,自带的gcc是4.4.7版本,具体折腾过成如下: 准备工作, 到GNU官方FTP下载GCC的源码包gcc-4.9.2.tar.gz. 下载下面三个依赖的安装包,这三个包的版本在gcc-4.9.2/contrib/download_prerequ

在CentOS 6.4中编译安装gcc 4.8.1

在CentOS 6.4中编译安装gcc 4.8.1 分类: C/C++ Linux/Unix2013-11-28 21:02 1877人阅读 评论(0) 收藏 举报 原文链接:http://www.cnblogs.com/codemood/archive/2013/06/01/3113200.html 1. 安装gcc和g++ 新安装的CentOS缺少编译环境,必须先安装旧版本的gcc, 然后再进行自举编译 yum -y install gccyum -y install gcc-c++ 2.

转:在CentOS下编译安装GCC

转:https://teddysun.com/432.html 在CentOS下编译安装GCC 技术  秋水逸冰  发布于: 2015-09-02  更新于: 2015-09-02  6519 次围观  14 次吐槽 我们知道,关于 GCC 在 CentOS 下通过 yum 安装默认版本号,CentOS 5 是 4.1.2:CentOS 6 是 4.4.7:CentOS 7 是 4.8.3.很多时候在编译安装软件都需要高版本的 GCC,否则就会报错.那么如何升级 GCC 的版本呢? 首先要确认升

编译安装gcc

不过使用yum安装的gcc并非当前的最新版本, 目前gcc的最新版本为4.9.0(gcc 4.8开始全面支持C 11和C++ 11的新特性).如果我们想要安装最新版本的gcc,那么就需要自行安装gcc. 笔者初次安装gcc时,在网络上搜寻了大量的gcc安装配置教程,许多教程的内容非常之多,结果把自己搞晕了,编译安装的时候还老是出现各种错误.最后查阅官方文档才发现,自行安装新版本的gcc并不复杂,根本没有那些教程中说的那样繁琐(有些教程居然还要修改几个配置文件). 下载gcc安装文件 在安装gcc

编译安装gcc 4.8.3

要用到c++11,基础设施建设... 0.系统版本: [email protected]:~# cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=12.04 DISTRIB_CODENAME=precise DISTRIB_DESCRIPTION="Ubuntu 12.04 LTS" [email protected]:~# uname -a Linux melos1305-B85M-DS3H 3.2.0-24-generic

CentOS 6.4 编译安装 gcc 4.8.1(转)

今天在isocpp上看到"GCC 4.8.1 released, C++11 feature complete"这个消息,非常兴奋.终于有一个全面支持C++11语言特性的编译器了! 当然了,gcc仅仅是语言特性上全面支持C++11,libstdc++貌似还没有完全跟上,不过我已经挺满足了,至少可以去尝试各种特性了.另外,之前也有消息说Clang功能上也100%支持C++11了,但是内部还在做测试,Clang3.3的release版据说6月5号正式发布,最近对于C++来说大事真多啊,很期