生成VS2010的BOOST库
系统:Windows 8.1
IDE:Visual studio 2010
BOOST:1.65.1
1. 进入编译环境
点击Visual Studio Command Prompt(2010)进入对应的控制台文本环境,这个环境已经加载了编译所需的环境变量;在环境变量正确的情况下,也可以使用CMD控制台。
进入..(BOOST源码库存放位置)\boost_1_65_1\
2. 开始生成编译工具
执行bootstrap.bat;//windows 系统下需要执行这个批处理文件
在这个阶段出错,打开bootstrap.log文件查看错误信息,
发现strings.c中出现报错,syntax error: missing ‘;’ before ‘type’....
出现类似错误的原因是类型未定义,这个原因是.c文件中,所有变量的声明必须在第一行可执行语句之前进行,将strings.c文件中的变量声明位置进行更改即可。
重新执行bootstrap.bat。遇到上面的问题以同样的方式进行处理。
在这步中遇到的第二个问题是:LNK2001: unresolved external symbol _va_copy...
出项这个问题的原因是,把linux下的程序一直到VC上时,C版本不支持va_copy,因为va_copy是C99中的。
根据bootstrap.log的显示,错误发生在连接debugger.obj的时候,所以在debugger.c中可以看到va_copy这个函数的掉用,在这个.c文件头部增加如下定义:
#ifndef va_copy
#ifdef __va_copy
#define va_copy(DEST,SRC) __va_copy((DEST),(SRC))
#else
#define va_copy(DEST,SRC) memcpy((&DEST),(&SRC),sizeof(va_list))
#endif
#endif
编译成功后,会提示 Bootstrapping is done. To build, run: .\b2,实际上可以使用.\bjam
3. 添加第三方库
有些库比如zlib是没有默认包含到boost库中的,需要先下载源代码,然后编译到boost库中。
以zlib、bzip2为例,下载源代码包,解压到本机,例如:
Zlib: c:\zlib-1.2.11
Bzip2: c:\bzip2-1.0.6
输入命令设置环境变量:
set BZIP2_SOURCE=”c:\bzip2-1.0.6”
set ZLIB_SOURCE=”c:\zlib-1.2.11”
4. 开始编译
在设置环境变量之后,输入.\bjam 开始默认编译。
编译结束之后,会显示include路径和library路径。
例如:
Include paths: c:\boost_1_65_1
Library paths: c:\boost_1_65_1\stage\lib