需要更多色彩的
不是代码,而是生活

Windows编译与安装boost1.69.0

1.下载源代码,官网:https://www.boost.org/,解压。我这里解压到了D:\boost_1_69_0

2.打开命令行,进入到代码目录

cd /d D:\boost_1_69_0

3.执行命令

bootstrap

此时,在该目录下会生成一个b2.exe文件和bjam.exe文件

3.编译,在不特定指定编译选项情况下,boost是编译成动态库,32bit,默认安装在boost解压目录,lib编译在boost解码目录下的子目录stage/lib下,编译器根据环境自动使用gcc或msvc。

b2

可以指定编译选项,如

b2 toolset=gcc address-model=64 --build-type=complete stage

toolset=gcc表示使用gcc编译器,address-model=64表示编译为64位库,--build-type=complete表示完全编译,stage表示只生成库文件。

其它参数说明:

(1)动态库编译

指定编译选项:link=shared

(2)静态库编译

指定编译选项:link=static runtime-link=static  ,其中link表示编译静态库,runtime-link表示静态连接c++运行库

(3)选择编译

boost库有很多子库,如boost1.69支持的库有(通过命令行b2  --show-libraries查看当前boost库支持命令--help查看帮助):
The following libraries require building:
- atomic
- chrono
- container
- context
- contract
- coroutine
- date_time
- exception
- fiber
- filesystem
- graph
- graph_parallel
- iostreams
- locale
- log
- math
- mpi
- program_options
- python
- random
- regex
- serialization
- stacktrace
- system
- test
- thread
- timer
- type_erasure
- wave

如果不需要完全编译,而是想通过指定组件名编译,则需要手动指定你需要的组件,使用--with-组件名,如--with-date_time,或者--without-组件名来排除一些不需要编译的组件。

(4)完全编译

如果需要编译所有库则不需要单独指定--witch-组件名,直接使用编译选项:--build-type=complete

(5)带安装编译

默认情况下不指定prefix和install,不会安装库到指定目录,如果添加--prefix选项且含有install关键字

如:--stagedir="E:\boost_1_69_0\64" --build-dir="E:\boost_1_69_0\64\build" 指定编译库和中间文件路径

如:--prefix=”E:\boost_1_69_0\include" install 则拷贝boost所有的头文件到include

(6)编译不同C++版本

如vs2015版本,则指定工具集为toolset=msvc-14.0,vs2008为msvc-9.0,vs2010为msvc-10.0,vs2013为msvc-12.0,vs2017为msvc-15.0,gcc8.1则指定为toolset=gcc-8.1.0,也可以不写版本号采用默认的。

(7)编译不同系统位

如果编译32位,则使用architecture=x86 address-model=32

如果编译64为,则使用architecture=x86 address-model=64

其中architecture=x86指定cpu为x86系列,address-model指定使用32位地址还是64位地址;

4.编译选项详情

--build-type=complete 表示编译所有版本(编译所有版本,不然只会编译一小部分版本(确切地说是相当于:variant=release, threading=multi;link=shared|static;runtime-link=shared))

(1)toolset:表示编译器工具;。

(2)architecture:表示架构,也就是你的CPU架构,因为我安装的是win7 32位,所以使用了x86的架构。

(3)instruction-set:表示指令集,依然是8086指令集。

(4)address-model:表示地址长度为32位或64 要有address-model=64属性,如果没有这个属性的话,会默认生成32位的平台库,加入这个选项才能生成64位的DLL。

(5)link:表示生成动态/静态链接库,动态链接库是shared,静态链接库是static,一般都会编译成静态库,因为给出程序的时候打包boost的库会非常庞大。

(6)variant:表示生成的Debug或者release版本,一般情况下会两种版本都会编译出来的。

(7)threading:表示单/多线程编译,一般我们的程序都会用到多线程,所以选择了multi。

(8).runtime-link:表示动态/静态链接C/C++运行时库(C/C++ Runtime)。

(9)without/with:表示不需要编译/需要编译哪些库,一些自己不用的库可以无需编译。需要注意,如果选择编译python的话,是需要python语言支持的,应该到python官方主页http://www.python.org/下载安装。查看boost包含库的命令是b2 --show-libraries。

(10)stage/install:stage表示只生成库文件(DLL和Lib),install还会生成包含头文件的include目录,推荐使用stage,因为boost_1_62_0\boost中就是boost库完整的头文件,所以无需再拷贝一份出来。编译出来的库会放在stage文件夹中。

(11)stagedir/prefix:stage时使用stagedir,install时使用prefix,表示编译生成文件的路径。

5.其他选项

--build-dir=<builddir>           编译的临时文件会放在builddir里(这样比较好管理,编译完就可以把它删除了)

--stagedir=<stagedir>         存放编译后库文件的路径,默认是stage

--build-type=complete    编译所有版本,不然只会编译一小部分版本(确切地说是相当于:variant=release, threading=multi;link=shared|static;runtime-link=shared)

variant=debug|release        决定编译什么版本(Debug or Release?)

link=static|shared                 决定使用静态库还是动态库。

threading=single|multi         决定使用单线程还是多线程库。

runtime-link=static|shared   决定是静态还是动态链接C/C++标准库。

--with-<library>                     只编译指定的库,如输入--with-regex就只编译regex库了。

--show-libraries                   显示需要编译的库名称

赞(3) 打赏
未经允许不得转载:代码一线 » Windows编译与安装boost1.69.0
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就支持一下本站

支付宝扫一扫打赏

微信扫一扫打赏