具体来说Boost库包含了:字符串及文本处理、容器、迭代器、算法、函数对象和高阶编程、泛型编程、模板元编程、预处理元编程、并发编程、数学相关、纠错和测试、数据结构、输入/输出、跨语言支持、内存相关、语法分析、杂项等方面的内容。
本文主要讲解怎么编译安装Boost和简单的示例程序。后面的文章再深入介绍Boost各模块具体的使用方法。
我们从Boost的官方网站下载源代码包,由于Boost库比较重,它的安装包也比较大,我下载的boost_1_72_0.tar.gz足有120M。
wget https://dl.bintray.com/boostorg/release/1.72.0/source/boost_1_72_0.tar.gz tar -zxvf boost_1_72_0.tar.gz cd boost_1_72_0 ./bootstrap.sh --with-libraries=all --with-toolset=gcc
执行上述命令后,我们看到如下信息,表明初步构建成功:
下一步开始编译,执行如下命令:
./b2 toolset=gcc
编译成功之后,我们将其安装到一个指定的目录。执行如下命令:
./b2 install --prefix=/home/motadou/objs/boost/ins
安装成功之后,我们会在/home/motadou/objs/boost/ins目录下看到这么两个文件夹:
其中include目录包含了各种模块的头文件,而lib目录包含了模块的静态库和动态库。
// 将该程序保存为:boost.cpp #include <boost/thread/thread.hpp> #include <iostream> #include <cstdlib> void func1() { static int cnt1 = 0; for ( ; true; ) { std::cout << "func1:" << cnt1++ << std::endl; ::sleep(1); } } void func2() { static int cnt2 = 0; for ( ; true; ) { std::cout << "func2:" << cnt2++ << std::endl; ::sleep(2); } } int main(int argc, char ** argv) { boost::thread thread1(&func1); boost::thread thread2(&func2); thread1.join(); thread2.join(); return 0; }
采用Boost静态库的编译方式。
使用如下命令编译上述源代码文件:
g++ -o test boost.cpp -I/home/motadou/objs/boost/ins/include /home/motadou/objs/boost/ins/lib/libboost_thread.a -lpthread
采用Boost动态库的编译方式。
第一步,将Boost动态库目录加入到动态库搜索路径中。使用如下命令:
sudo vi /etc/ld.so.conf
在该文件末尾加入/home/motadou/objs/boost/ins/lib/。
修改完毕的文件如下示例:
第二步,使用ldconfig命令配置动态链接器在运行时的绑定。使用如下命令:
sudo ldconfig
第三步,使用如下命令编译上述源代码文件:
g++ -o test boost.cpp -I/home/motadou/objs/boost/ins/include -L/home/motadou/objs/boost/ins/lib -lboost_thread -lpthread
使用上述两种方式都能正确编译出可执行程序。我们运行可执行程序,程序运行结果如下:
原文链接: https://www.cnblogs.com/motadou/archive/2013/01/06/2848354.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/74698
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!