C++ Boost在Windows和Linux下的编译安装

C++作为历史上最成功的语言之一,除了它具有面向对象的性质之外,还有一个非常重要的创新,那就是泛型编程。泛型的思想其实是为所有问题提供一个解决方案的模版,程序员只需把每次的具体问题放到模版里面,那么就可以获得该问题的解决方案,利用模版做到具体问题具体分析。C++ STL毫无疑问是泛型思想的一个成功案例。在STL中,我们看到各种封装好的数据结构和算法,而不需要程序员再重复制造轮子(何况自己造的轮子还不一定可靠)。与STL类似,Boost也是基于泛型思想实现的C++库,里面涉及了并发、网络通信、分布式编程、内存托管、系统管理等许多方面。今天首先分享Boost库在Windows和Linux下编译安装的过程,最后会用一些简单的例子来验证我们安装的正确性。

1.Boost在Win7+Visual Studio2012的编译安装

Step1:从官方网站(http://www.boost.org/)上下载某一版本的Boost,比如我下载的Boost1.55的版本(http://sourceforge.net/projects/boost/files/boost/1.55.0/),zip压缩包。

Step2:将下载好的boost_1_55_0.zip解压到某一路径下(比如:E:\boost_1_55_0)。

Step3:打开CMD窗口,cd到Step2中boost解压的目录下。运行bootstrap.bat批处理文件。

Step4:完成Step3后,当前目录下会生成一个bjam.exe文件和b2.exe文件。直接执行其中任意一个exe文件(我执行的是bjam.exe),会进行大约15分钟的库的编译(生成动态链接库和静态链接库)。

注意:在编译前,需要安装某一个版本的Visual Studio。我安装的是Visual Studio 2012。不同版本的VS最后生成的Boost动/静链接库不通用

Step5:库生成完后。Boost的编译就告一段落。下面我们要做的是在Visual Studio中进行配置

Step6:打开VS IDE。新建一个工程(比如叫Boost)。右击该项目-->属性-->设置项目的属性如下两张图(用于库的连接和头文件路径的指定):


图1(头文件路径指定,不指定的话,include<boost/timer.hpp>等,则会提示找不到头文件):

图2(库路径的指定):


到目前为止,Windows上的Boost安装和VS的设置就基本结束了。下面我们通过一个简单的例子来验证我们的安装是否正确。我们在刚才创建的Boost工程中新建一个lexical.cpp的文件,代码如下:

#include <boost/lexical_cast.hpp>
#include <iostream>

using namespace std;
using namespace boost;

int main(){
	int a = lexical_cast<int>("123");
	cout<<a<<endl;<span style="white-space:pre">				</span>//123
	return 0;
}

 
 

这段程序用到了Boost库中类型转换的函数lexical_cast< ?>。最后我们编译运行得到的结果是:123。表示Boost配置正确。


2.Boost在Linux系统上的编译安装

Step1,Step2:与在Windows上安装Boost的前两个步骤一致。将下载好的压缩包解压到某一个路径下面。

Step3:cd到解压缩的安装目录下面,运行命令sudo ./bootstrap.sh --prefix=/usr/local。其实--prefix后面的参数的作用是决定放置动态和静态链接库的路径。这个路径可以根据自己的实际情况决定。

Step4:运行命令: sudo ./b2 instal。该命令的作用是开始编译Boost库,并且生成库文件。

Step5:大概等待15分钟左右,编译结束。库的生成路径:/usr/local/lib,头文件的路径:/usr/local/include/boost。

Step6:添加lib库自动搜索路径到/etc/ld.so.conf,然后ldconfig使设置生效。具体操作为:运行命令:sudo vim /etc/ld.so.conf,将"include /usr/local/lib"这句话添加进去,并保存退出vim编辑器。再运行ldconfig命令使之生效。

Step7:到目前为止,Boost库在Linux上的编译安装可以算告一段落。下面我们编译一下那个lexical.cc文件,并执行:

编译命令:g++ -o lexcial lexcial.cc

执行:./lexical

结果:123

到此为止,Boost库在Windows和Linux上的部署和测试都已经通过了。当然,有一些Boost的类库(例如:Boost::asio)必须依赖已经编译生成的动/静态库文件。则在编译的时候需要加上一点参数才能通过编译(这里指的是用g++命令编译的时候)。具体的方法我会在接下来的文章中做详细的阐述。有需要的朋友可以看一下,作为参考。

Boost作为C++ STL的强有力的补充一直是C++程序员的利器,如果Boost的中的内容都可以正式成为C++的标准,那么C++的市场份额也许会再次提升(当然,库多了,开源项目也会多起来)。现在大量应用的Java语言在很大程度上就是因为其强大的库和GC机制,这些C++的Boost和智能指针也许可以与之相媲美。了解、用好Boost无疑会为C++程序员打开另一扇大门。该篇文章参考了一些书籍和博客,这里我把清单列出来,有兴趣的朋友可以去看一下。


参考文献:

1.《Boost程序库完全开发指南:深入C++“准”标准库》,作者:罗剑锋

2.Linux下动态链接库的路径配置:http://blog.163.com/wang_yonglin/blog/static/59342936201511122713521/

3.Linux下Boost的安装:http://www.cnblogs.com/edgarli/archive/2012/11/18/boost.html

4.Windows下Boost的安装:http://jingyan.baidu.com/article/11c17a2c765763f446e39dc1.html

猜你喜欢

转载自blog.csdn.net/wangongxi/article/details/49526541