GCC更新到4.8支持C++11的特性

简介:

1.1 获取安装包并解压


wget http://ftp.gnu.org/gnu/gcc/gcc-4.8.2/gcc-4.8.2.tar.bz2

tar -jxvf gcc-4.8.2.tar.bz2


1.2 下载编译GCC所依赖的源码库,使用到一个特殊的脚本


cd gcc-4.8.2 

./contrib/download_prerequisites 


将在./contrib目录下,下载三个源码库:

gmp-4.3.2 mpfr-2.4.2  mpc-0.8.1 


1.3 编译安装上述三个依赖库

注意:没有安装到/usr/lib默认的系统目录,所以

稍后编译GCC的时候,需要指定LIB库目录,使用指令如下:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mpc-0.8.1/lib:/usr/local/gmp-4.3.2/lib:/usr/local/mpfr-2.4.2/lib 


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

make 

make install


./configure  --prefix=/usr/local/mpfr-2.4.2 --with-gmp=/usr/local/gmp-4.3.2/

make 

make install


./configure --prefix=/usr/local/mpc-0.8.1 --with-gmp=/usr/local/gmp-4.3.2/  --with-

mpfr=/usr/local/mpfr-2.4.2/

make 

make install



1.4 建立一个目录供编译出的文件存放


mkdir gcc-build-4.8.2

cd gcc-build-4.8.2


1.5开始编译GCC


指定依赖库的路径

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mpc-0.8.1/lib:/usr/local/gmp-

4.3.2/lib:/usr/local/mpfr-2.4.2/lib 


 ../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib --

with-gmp=/usr/local/gmp-4.3.2/  --with-mpfr=/usr/local/mpfr-2.4.2/ --with-

mpc=/usr/local/mpc-0.8.1/


make 

make install



1.6 测试版本

gcc -v

使用内建 specs。

COLLECT_GCC=gcc

COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/i686-pc-linux-gnu/4.8.2/lto-wrapper

目标:i686-pc-linux-gnu

配置为:../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib 


--with-gmp=/usr/local/gmp-4.3.2/ --with-mpfr=/usr/local/mpfr-2.4.2/ --with-


mpc=/usr/local/mpc-0.8.1/

线程模型:posix

gcc 版本 4.8.2 (GCC) 


1.7例子编译

#include <iostream>

#include <memory>


int main()

{

      std::shared_ptr<int> pInt(new int(5));

      std::cout << *pInt << std::endl;

      return 0;

}

   

g++ -std=c++11 test.cpp 

/usr/local/libexec/gcc/i686-pc-linux-gnu/4.8.2/cc1plus: error while loading shared 


libraries: libmpc.so.2: cannot open shared object file: No such file or directory


原因libmpc.so.2并没有安装到/usr/lib系统库目录,而是安装在/usr/local/mpc-0.8.1目录下,

所以需要执行如下的命令:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mpc-0.8.1/lib:/usr/local/gmp-


4.3.2/lib:/usr/local/mpfr-2.4.2/lib 


     本文转自fengyuzaitu 51CTO博客,原文链接:http://blog.51cto.com/fengyuzaitu/1580744,如需转载请自行联系原作者




相关文章
|
4月前
|
编译器 C++ 开发者
C++一分钟之-C++20新特性:模块化编程
【6月更文挑战第27天】C++20引入模块化编程,缓解`#include`带来的编译时间长和头文件管理难题。模块由接口(`.cppm`)和实现(`.cpp`)组成,使用`import`导入。常见问题包括兼容性、设计不当、暴露私有细节和编译器支持。避免这些问题需分阶段迁移、合理设计、明确接口和关注编译器更新。示例展示了模块定义和使用,提升代码组织和维护性。随着编译器支持加强,模块化将成为C++标准的关键特性。
176 3
|
7天前
|
存储 算法 程序员
C++ 11新特性之function
C++ 11新特性之function
18 9
|
7天前
|
编译器 C++ 计算机视觉
C++ 11新特性之完美转发
C++ 11新特性之完美转发
17 4
|
7天前
|
Java C# C++
C++ 11新特性之语法甜点1
C++ 11新特性之语法甜点1
19 4
|
7天前
|
存储 安全 C++
C++ 11新特性之unique_ptr
C++ 11新特性之unique_ptr
16 4
|
7天前
|
安全 程序员 编译器
C++ 11新特性之auto和decltype
C++ 11新特性之auto和decltype
15 3
|
7天前
|
设计模式 缓存 安全
C++ 11新特性之week_ptr
C++ 11新特性之week_ptr
14 2
|
7天前
|
编译器 C++ 容器
C++ 11新特性之语法甜点2
C++ 11新特性之语法甜点2
16 1
|
7天前
|
编译器 C++
C++ 11新特性之右值引用
C++ 11新特性之右值引用
15 1
|
7天前
|
存储 编译器 调度
C++ 11新特性之bind
C++ 11新特性之bind