g++-4.5.2源码构建&c++0x演示

1 篇文章 0 订阅

title - g++-4.5.2 Build & Install & c++0x demo

[1].http://blog.csdn.net/pongba/archive/2007/04/11/1561194.aspx
[2].http://www.bccn.net/Article/kfyy/cjj/jszl/200607/4179.html
[3].http://www2.research.att.com/~bs/C++0xFAQ.html

1. Prerequisites
$sudo apt-get install build-essential
1.1. http://gcc.gnu.org/install/prerequisites.html
~/software/gcc$wget ftp://gcc.gnu.org/pub/gcc/infrastructure/mpc-0.8.1.tar.gz
~/software/gcc$wget ftp://gcc.gnu.org/pub/gcc/infrastructure/gmp-4.3.2.tar.bz2
~/software/gcc$wget ftp://gcc.gnu.org/pub/gcc/infrastructure/mpfr-2.4.2.tar.bz2

1.2. http://gcc.gnu.org/mirrors.html
选择一个可用ftp站点
$wget ftp://gd.tuwien.ac.at/gnu/gcc/releases/gcc-4.5.2/gcc-core-4.5.2.tar.bz2
$wget ftp://gd.tuwien.ac.at/gnu/gcc/releases/gcc-4.5.2/gcc-g++-4.5.2.tar.gz

1.3.解压
~/software/gcc$tar xjf gcc-core-4.5.2.tar.bz2
~/software/gcc$tar xjf gcc-g++-4.5.2.tar.bz2
~/software/gcc$tar xjf gmp-4.3.2.tar.bz2
~/software/gcc$tar xjf mpfr-2.4.2.tar.bz2
~/software/gcc$tar xzf mpc-0.8.1.tar.gz

~/software/gcc$ ll
总计 37448
drwxr-xr-x 23 zhoubo zhoubo     4096 01-11 10:41 gcc-4.5.2
-rw-r--r--  1 zhoubo zhoubo 28241468 01-10 18:49 gcc-core-4.5.2.tar.bz2
-rw-r--r--  1 zhoubo zhoubo  6479975 01-10 18:50 gcc-g++-4.5.2.tar.bz2
drwxr-xr-x 16 zhoubo zhoubo     4096 01-11 10:12 gmp-4.3.2
-rw-r--r--  1 zhoubo zhoubo  1897483 01-11 10:10 gmp-4.3.2.tar.bz2
drwxr-xr-x  5 zhoubo zhoubo     4096 01-11 10:29 mpc-0.8.1
-rw-r--r--  1 zhoubo zhoubo   544950 01-11 10:05 mpc-0.8.1.tar.gz
drwxr-xr-x  7 zhoubo zhoubo    20480 01-11 10:22 mpfr-2.4.2
-rw-r--r--  1 zhoubo zhoubo  1077886 01-11 10:05 mpfr-2.4.2.tar.bz2

2. Build & Install
~/software/gcc/gmp-4.3.2$ ./configure --prefix=/usr
~/software/gcc/gmp-4.3.2$make
~/software/gcc/gmp-4.3.2$sudo make install

~/software/gcc/mpfr-2.4.2$./configure --prefix=/usr
~/software/gcc/mpfr-2.4.2$make
~/software/gcc/mpfr-2.4.2$sudo make install

~/software/gcc/mpc-0.8.1$./configure --prefix=/usr
~/software/gcc/mpc-0.8.1$make
~/software/gcc/mpc-0.8.1$sudo make install

~/software/gcc/gcc-4.5.2$./configure --prefix=/usr
~/software/gcc/gcc-4.5.2$make
~/software/gcc/gcc-4.5.2$sudo make install

3. demo
3.1. democxx0x.cpp
#include <iostream>
#include <memory>
#include <vector>
#include <functional>
#include <tuple>
#include <string>
#include <thread>

using namespace std;

void demo_auto()
{
    cout << "*** demo auto ***" << endl;
    for (auto i = 0; i < 10; ++i)
    {
        std::cout << i << std::endl;
    }

    std::shared_ptr<int> sp(new int(1));
    std::cout << *sp << std::endl;

    std::vector<double> v;
    v.push_back(1.0);
    v.push_back(1.0/2);
    v.push_back(1.0/3);
    for (auto it = v.begin(); it != v.end(); ++it)
    {
        std::cout << *it << std::endl;
    }
}

void demo_lambda()
{
    cout << "*** demo lambda ***" << endl;

    function<int(int)> product;
    product = [&product] (int n) -> int { return n <= 1 ? 1 : n * product(n - 1); };
    cout << "The answer is: " << product(5) << endl;
}

void demo_tuple()
{
    cout << "*** demo tuple ***" << endl;

    tuple<string,int> t2("Kylling",123);
    auto t = make_tuple(string("Herring"),10, 1.23);    // t will be of type tuple<string,int,double>
    string s = get<0>(t);
    int x = get<1>(t);
    double d = get<2>(t);
   
    cout << "get<0>(t2) : " << get<0>(t2) << "/n"
         << "get<1>(t2) : " << get<1>(t2) << "/n"
         << "get<0>(t) : " << s << "/n"
         << "get<1>(t) : " << x << "/n"
         << "get<2>(t) : " << d << "/n"
         << endl;
}

void f()
{
    cout << "f()" << endl;
}

struct F
{
    void operator()()
    {
        cout << "F::operator()" << endl;
    }
};

void demo_thread()
{
    cout << "*** demo thread ***" << endl;
    thread t1{f};
    thread t2{F()};
    t1.join();
    t2.join(); 
}

int main(int argc, char *argv[])
{
    demo_auto();
    demo_lambda();
    demo_tuple();
    demo_thread();
    return 0;
}

3.2. compile
~/test/cpp0x$g++  -Wall -O2 -std=c++0x -pthread -o democxx0x democxx0x.cpp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值