zoukankan      html  css  js  c++  java
  • 【Todo】Boost安装与学习

    现在这里找下载包

    http://sourceforge.net/projects/boost

    我找的是 1_62_0

    下面是从公司wiki上找到的一个说明。

    boost & thrift安装步骤
    1.    boost安装
    cd /usr/local
    tar zxvf boost_1_49_0.tar.gz
    ./bootstrap.sh --prefix=/usr/local/boost_1_49_0
    ./b2 install
    
    
    2.    thrift安装
    tar zxvf thrift-0.8.0.tar.gz
    cd thrift-0.8.0
    ./configure --with-boost=/usr/local/boost_1_49_0 --prefix=/home/work/local/thrift-0.8.0
    make
    make install
    
    
    make如有下面报错:
    …: tr1/functional: No such file or directory
    …
    make[4]: Leaving directory `/home/work/thrift-0.8.0/lib/cpp'
    make[3]: *** [all-recursive] Error 1
    make[3]: Leaving directory `/home/work/thrift-0.8.0/lib/cpp'
    make[2]: *** [all-recursive] Error 1
    make[2]: Leaving directory `/home/work/thrift-0.8.0/lib'
    make[1]: *** [all-recursive] Error 1
    make[1]: Leaving directory `/home/work/thrift-0.8.0'
    make: *** [all] Error 2
    
    则修改如下3个文件:
    vi lib/cpp/src/concurrency/ThreadManager.h
    24 #include <boost/tr1/tr1/functional>
    
    vi lib/cpp/src/async/TAsyncChannel.h
    23 #include <boost/tr1/tr1/functional>
    
    vi lib/cpp/src/async/TAsyncChannel.cpp
    21 #include <boost/tr1/tr1/functional>

    开始,我直接用

    ./bootstrap.sh
    ./b2
    ./b2 install

    结果报了很多错,基本都是fail或者skip.

    然后按照上面的提示,指定了一下目录:

    ./bootstrap.sh --prefix=/home/work/data/installed/boost
    ./b2 install

    还是有一些skip的提示:

    ...failed updating 50 targets...
    ...skipped 35 targets...
    ...updated 13364 targets...

    但是已经比之前好多了,已经成功更新了10000+targets.

    在目录 /home/work/data/code/boost_demo 里面,写一段demo代码 boost_demo.cpp 如下:

    #include  <boost/lexical_cast.hpp>
    #include  <iostream>
    
    int main() {
        using boost::lexical_cast;
        int a = lexical_cast<int> ("123");
        double b = lexical_cast<double> ("123.12");
        std::cout << a << std::endl;
        std::cout << b << std::endl;
        return 0;
    }

    编译命令如下:

    g++ -Wall -I/home/work/data/installed/boost/include/ -o test_boost boost_demo.cpp

    但是报错找不到头文件:

    boost_demo.cpp:1:37: boost/lexical_cast.hpp : No such file or directory

    分析了一下,是因为boost没有装在标准目录,所以需要用""代替<>,代码改成:

    #include  "boost/lexical_cast.hpp"
    #include  <iostream>
    
    int main() {
        using boost::lexical_cast;
        int a = lexical_cast<int> ("123");
        double b = lexical_cast<double> ("123.12");
        std::cout << a << std::endl;
        std::cout << b << std::endl;
        return 0;
    }

    编译后运行:

    g++ -Wall -I/home/work/data/installed/boost/include/ -o test_boost boost_demo.cpp
    
    ./test_boost
    
    123
    123.12

    注意,boost大多数库一般都不需要添加-L或者-l参数,用-I指定头文件路径即可。要根据不同的库的情况来处理。

    然后在我自己的Mac机器上,运行 brew search boost 查看,发现boost貌似已经安装,写程序实验了一下(仍然用上面的程序,""可以写成<>)。

    编译,运行:

    g++ -o boost_demo boost_demo.cpp
    
    ./boost_demo
    
    123
    123.12

    以上。后续,再对boost做更多学习和实验。

  • 相关阅读:
    时间好快,转眼又一周
    八月第二周
    八月第一周
    经济学人:埃航失事:波音信誉遭到危机(2)
    1109. 航班预订统计 --前缀和 和差分
    99. 激光炸弹 --前缀和+暴力 + 动态规划
    1108. Defanging an IP Address
    【mybatis】学习笔记 3动态语句 foreach generator使用【 小心生成系统中的数据库 如uesr表 country表】
    【mybatis】学习笔记 2 动态代理 输入输出参数 关联查询
    【JSP学习笔记】1jsp入门
  • 原文地址:https://www.cnblogs.com/charlesblc/p/5945350.html
Copyright © 2011-2022 走看看