您的位置:首页 > 其它

win64系统下vs2008安装boost_1_51_0

2013-06-26 10:00 190 查看
安装boost_1_51_0的官方文档详见链接:boost源码根目录下的index.html ,往下找可以找到 :file:///D:/boost/more/getting_started/windows.html

使用boostpro直接安装

这个比较简单 ,直接下一步 ……就ok了 。

boost源码安装

首先查看boost源码根目录下的index.html文件 ,然后根据文件中指出的 “Getting
Started Guide "连接到的页面 ,根据下面的文档进行编译。
完全编译的话可以通过以下方式:
1)cd 到你的boost源码所在的目录。
2)在命令行中运行命令bootstrap ,会生成boost.build
3)运行命令 .\b2
这种方式是全部安装,且不能很好的区分生成的lib是64位还是32位的。所以可以采用下面这种方式编译单个库或者全部库文件,并且能够把库放到你指定的目录中去。

单个库安装并指定具体路径

1)进入到boost源文件的根目录下 ,通过vs008的“Visual Studio Command Prompt (2008)”(编译32位)、“Visual Studio X64 Win64 Command Prompt (2008)”(编译64位)菜单项进入vs2008命令行,并进入解压后的boost_1_51_0目录;
在命令行中运行bootstrap命令 。(执行一次即可)
如果想编译单个库,那么首先需要知道哪些库时需要编译的 。
2)查看需要编译的库:
bjam --show-libraries

3)针对指定的库进行编译 :使用--with-<LIBRARIES> 如:thread库就使用 --with-thread ,如果想编译所有的库,那么就不需要指定参数--with-<LIBRARIES>,如果希望指定除了某库之外的都安装的话 ,使用参数 --without-<LIBRARIES>
在x64下编译release:
bjam --stagedir=./stage/x64libR stage toolset=msvc-9.0 variant=release link=shared address-model=64 threading=multi runtime-link=shared --with-thread
在x64下编译debug:

bjam --stagedir=./stage/x64libD stage toolset=msvc-9.0 variant=debug link=shared address-model=64 threading=multi runtime-link=shared --with-thread
在x86下编译release:
bjam --stagedir=./stage/win32libR stage toolset=msvc-9.0 variant=release link=shared address-model=32 threading=multi runtime-link=shared --with-thread
在x86下编译debug:
bjam --stagedir=./stage/win32libD stage toolset=msvc-9.0 variant=debug link=shared address-model=32 threading=multi runtime-link=shared --with-thread

其中编译参数信息 :

--stagedir设置lib库的目录;
stage表示只生成库文件(dll与lib文件);也选择install参数 。
install会生成包含头文件的include目录。
toolset指定编译器,vs2008就是msvc-9.0,vs2005/vs2010分别是msvc-8.0与msvc-10.0;
variant决定编译什么版本,debug或者release;
--build-type=complete 表示编译所有库支持的variant 。如 :variant=debug ,release;如果希望生成的debug和release版本 分开放在不同的文件夹 ,那么可以通过指定variant的方式一次只生成debug或者是release 。
address-model决定地址长度,即32还是64位程序;
threading决定使用单线程(single)还是多线程(multi)库;
-s ICU_PATH设置icu4c的路径;
link决定生成静态库还是动态库,shared是动态库,static是静态库;
runtime-link决定是静态(static)还是动态(shared)链接C/C++标准库

【注意】:所有的参数与参数值之间用等号连接,且等号两端都没有空格。

在编译参数中,不允许出现这样子的组合 :link=shared runtime_link=static .
link 和runtime-link的参数组合只能出现以下三种 :
1)link=static runtime-link=static 生成的文件名类似 :libboost_math_c99f-vc90-mt-sgd-1_51.lib(静态库)
2)link=static runtime-link=shared 生成的文件名类似 :libboost_math_c99f-vc90-mt-gd-1_51.lib(静态库)
3)link=shared runtime-link=shared生成的文件名类似 :boost_math_c99f-vc90-mt-gd-1_51.lib (导入库)和boost_math_c99f-vc90-mt-gd-1_51.dll(动态库)
若编译好的库在使用时提示连接错误 ,缺少什么类型的库文件,只需要去补充编译就好。
如果你希望同时静态库并同时静态和动态连接C/C++标准库,你可以使用如下 方式: link=static runtime-link=static,shared ;但是要注意,不能出现上述不允许出现的组合。
通过命令 :
b2 --help 或者 bjam --help 可以寻求帮助 ,个人觉得这个是非常有用的 。

boost库命名规则 :
以 libboost_program_options-vc90-mt-s-1_51.lib 为例:

lib 前缀:除了Microsoft Windows之外,每一个Boost库的名字都以此字符串开始。在Windows上,只有普通的静态库使用lib前缀;导入库和DLL不使用。

boost_program_options库名称:所有boost库名文件以boost_开头。

-vc90 Toolset 标记:标识了构建该库所用的toolset和版本。

-mt Threading 标记:标识构建该库启用了多线程支持。不支持多线程的库没有-mt。

-s ABI标记:编码了影响库和其他编译代码交互的细节。对于每一种特性,向标记中添加一个字母:
Key Use this library when:
s静态链接到C++标准库和编译器运行时支撑库
g使用标准库和运行时支撑库的调试版本
y使用Python的特殊调试构建
d 构建代码的调试版本
p 使用STLPort标准库而不是编译器提供的默认库
n 使用STLPort已被弃用的“native iostreams”
-1_51 版本标记:完整的Boost发布号,下划线代替点。例如,1.51.0版本将被标记为“-1_51_0 ”。
.lib 扩展名:取决于操作系统。在大多数unix平台上,.a是静态库,.so是共享库。在Windows上,.dll表示共享库,.lib是静态或导入库。

如果是不完全编译boost库 ,在使用时经常会出现连接错误 ,提示无法打开或者找不到某库文件 ,那么我们可以从希望生成的库文件名来设定编译参数 ,从而编译出想要的库文件.

eg : 若希望生成如下名:libboost_regex-vc90-mt-sgd-1_51.lib的库 ,可以指定 link=static runtime-link=static ; 可以看出 ,lib*.lib是一个静态库 ,所以link=static ,又由于-s表示静态链接C/C++标准库,因此runtime-link=static
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: