系列文章(二)| VS2013-MPI v7-静态编译-Boost1.6.1

这是系列文章的第2/7篇

1.VS2013-Qt5.5.1-动态编译-VTK7.0.0

2. VS2013-MPI v7-静态编译-Boost1.6.1

3.VS2013-编译-Qhull2015.2

4.VS2013-编译-FLANN1.8.4

5.VS2013-编译-Eigen3.2.8

6.OpenNI2.2.0.33下载和安装

7. VS2013-Qt5.5.1-VTK7.0.0-Boost1.6.1-Qhull2015.2-FLANN1.8.4-Eigen3.2.8-OpenNI2.2.0.33-动态编译-PCL1.8.0

此次编译Boost1.6.1,采用VS2013,在X64下编译debug和release两个版本,所依赖的MPI版本是7.0.12437.6版.

1

下载Microsoft MPI v7

编辑这篇文章时,最新的MPI发布版是7.0.12437.6版.

msmpisdk.msi和MSMpiSetup.exe都需要下载.

2

安装Microsoft MPI v7

msmpisdk.msi和MSMpiSetup.exe都需要安装,最好默认安装.前者会默认安装到C:\Program Files (x86)\Microsoft SDKs\MPI;后者会默认安装到C:\ProgramFiles\Microsoft MPI;并会自动设置环境变量.

3

下载Boost

Boost官网主页(https://www.boost.org/)列出的就是最新版本的boost库源码,官方不提供预编译版本.

Version 1.61.0(https://www.boost.org/users/history/version_1_61_0.html)和Release Notes(https://www.boost.org/users/history/version_1_61_0.html)链接到同一个页面,该页面提供了源码下载,也提供了跳转到第三方网盘的链接(有预编译版本).Download(https://sourceforge.net/projects/boost/files/boost/1.61.0/)跳转到第三方网盘(提供源码下载).

这个页面其实是当前版本Boost库的完整发布说明,包含documentation链接,Download链接,Third Party Downloads链接,New Libraries(当前版本新增加的库)说明,UpdatedLibraries(当前版本更新的库)说明,Compilers Tested说明等.如下图:

download跳转到第三方网盘如下图,随便下载哪个都一样,只是压缩格式不同而已。

4

.解压Boost

解压Boost,本文解压到下列路径:

找到D:\Boost\1.6.1\Src\boost_1_61_0\tools\build\src\tools\mpi.jam文件,修改mpi.jam文件如下:

注:boost项目对微软的MPI似乎很久没管了,所以需要修改一下相关参数,才能正确应用MS-MPI

5

打开

VS2013 x64 Native Tools Command Prompt

本文使用VS2013,编译64位的boost.

切换到boost源码目录,cd /d “D:\Boost\1.6.1\Src\boost_1_61_0”

执行bootstrap.bat,如下图:

等一会儿后,生成四个文件如下:

b2.exe,bjam.exe这两个exe作用是一样的,bjam.exe是老版本,b2是bjam的升级版本.

b2 --help 查看帮助,非常有用.

6

打开project-config.jam

添加using mpi ;如下图:

注意;左右都有空格

7

编译并安装

b2 --toolset=msvc-12.0 address-model=64 --build-dir="I:\build\boost" install --prefix="D:\Boost\1.6.1\msvc2013_64"--without-graph_parallel --without-python -j8

b2.exe toolset=msvc-12.0 address-model=64--build-dir=build\x64 install --prefix="E:\杨帆文件\软件\PCL文件\boost\1.6.1\msvc2013_64"-j8

各个参数什么意思,b2 --help说得很清楚.大部分参数都可以使用默认值,所以只指定了有必要修改的几个参数.

address-model=64必须要,就算是用X64命令行,依然要加这个参数才OK.编译32位用address-model=32.不加这个参数,默认是32.--help里面并没有提到这个参数.

--without-graph_parallel是因为这个模块编译一直出错,所以干脆不编译它了.

--without-python是因为单纯地不想要python.

-j8是并行编译线程数.

注:bjam在编译过程中,出错不会停下来,而是直接跳过出错的模块,除非加参数让其遇错停下.而且是边编译边安装.

测试时用的参数,直接无视就好

b2--toolset=msvc-12.0 address-model=64 --build-dir="I:\build\boost"stage --stagedir="I:\build\boost" --without-graph_parallel--without-python -j8 -q

可以用dumpbin去检查lib/dll是X86还是X64

dumpbin/headers *.lib | findstr machine

dumpbin/headers *.dll | findstr machine

间接确定某个lib是静态还是动态[会显示其它信息或者对应的dll]

dumpbin/headers *.lib

直接确定某个lib是静态还是动态[会列出包含的obj或者对应的dll]

lib /list*.lib

8

Boost安装目录分析

[include]文件夹装的是包含目录,D/R版本的内容完全一样.

[lib]文件中,装的都是staticlib文件,D/R版本各有34个lib.

lib一一对应,但内容不一样.

控制台编译,没有生成PDB.

因为是静态编译,所有没有dll,也没有[bin]文件夹.

静态编译通常没有PDB.

原文发布于微信公众号 - 点云PCL(dianyunPCL)

原文发表时间:2018-05-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券