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,如需转载请自行联系原作者




相关文章
|
18天前
|
C语言 C++ 开发者
深入探索C++:特性、代码实践及流程图解析
深入探索C++:特性、代码实践及流程图解析
|
18天前
|
存储 算法 程序员
【C++20 新特性 】模板参数包展开与Lambda初始化捕获详解
【C++20 新特性 】模板参数包展开与Lambda初始化捕获详解
103 3
|
18天前
|
自然语言处理 编译器 C语言
【C++ 20 新特性】参数包初始化捕获的魅力 (“pack init-capture“ in C++20: A Deep Dive)
【C++ 20 新特性】参数包初始化捕获的魅力 (“pack init-capture“ in C++20: A Deep Dive)
51 0
|
18天前
|
算法 数据处理 C++
【C++ 20 新特性 算法和迭代器库的扩展和泛化 Ranges】深入浅出C++ Ranges库 (Exploring the C++ Ranges Library)
【C++ 20 新特性 算法和迭代器库的扩展和泛化 Ranges】深入浅出C++ Ranges库 (Exploring the C++ Ranges Library)
145 1
|
18天前
|
存储 安全 API
C++ 17 新特性 C++ String View:了解C++ 17 std::string_view的使用场景
C++ 17 新特性 C++ String View:了解C++ 17 std::string_view的使用场景
102 2
|
18天前
|
编译器 程序员 API
C++ 14 17 新特性:[[fallthrough]], [[nodiscard]], [[maybe_unused]], 和 [[deprecated]] 新属性的使用...
C++ 14 17 新特性:[[fallthrough]], [[nodiscard]], [[maybe_unused]], 和 [[deprecated]] 新属性的使用...
27 3
|
18天前
|
人工智能 机器人 编译器
【C/C++】g++ 与 gcc的区别
【C/C++】g++ 与 gcc的区别
|
2天前
|
编译器 C语言 C++
C++的基本特性和语法
C++的基本特性和语法
8 1
|
9天前
|
安全 算法 程序员
探索C++的魅力:语言特性、编程实践及代码示例
C++是广泛应用的编程语言,尤其在系统级编程、应用开发、游戏和嵌入式系统中广泛使用。其主要特性包括:面向对象编程(封装、继承、多态),泛型编程(通过模板实现代码复用和类型安全),以及丰富的标准库和第三方库。在编程实践中,需注意内存管理、异常处理和性能优化。示例代码展示了面向对象和泛型编程,如类的继承和泛型函数的使用。C++的内存管理和库支持使其在解决复杂问题时具有高效和灵活性。
|
18天前
|
自然语言处理 编译器 C语言
【C++】C++ 入门 — 命名空间,输入输出,函数新特性
本文章是我对C++学习的开始,很荣幸与大家一同进步。 首先我先介绍一下C++,C++是上个世纪为了解决软件危机所创立 的一项面向对象的编程语言(OOP思想)。
38 1
【C++】C++ 入门 — 命名空间,输入输出,函数新特性