boost库的使用问题总结
直到最近才使用大名鼎鼎的boost库,从什么都不知道到现在能用,也算经历了不少事情。使用boost首先就需要编译,然后才可以使用,编译就是第一个大问题,详细情况如下:
boost库版本:boost 1.48.0
目标平台:windows xp SP3,Linux Ubuntu 2.6.24-22-generic。
1. Windows XP SP3 和 VS2011 下的编译和使用
a.使用自启动程序bootstrap.bat
b. 在cmd中编译,具体的选项设置可以google 一下,注意的是在windows下variant=debug release都是可以的,也可以生成静态库或者动态库,可以选用stage 或者是 install。
c. 在VS2011中使用是,在VC工程属性中,将boost的目录和库目录加入。在使用静态库是没有什么问题,但是在使用动态链接库是必须定义BOOST_ALL_DYN_LINK,否则使用时会报错。
2. Linux Ubuntu 2.6.24-22-generic,gcc-4.2.4
a. 使用bootstrap.sh 创建bjam
b. 在编译时注意,不要同时生成debug和release版本,否则会duplicate target这类的错误,其他的没有什么不同。
c. 在程序链接是一定要注意库的链接顺序。比例程序名为sample,那么编译时的命令如下:
g++ -I/path/to/boost/ -o sample sample.cpp xxx.cpp xx.h -L/path/to/boost/lib -lboost_xxx,其中boost_xxx中的xxx代表boost库的名字。这个时候的链接顺序一定要把-L
和-l命令和你的源程序文件放在一起,放在后面, 否则一定会有一大堆的undefined reference错误。
这就是我使用boost的时候,觉得应该注意的地方了。