一、前言
备忘一下mrpt编译细节
本文所用系统为Ubuntu 14.04 64位,mrpt版本为1.3.2
本文地址:http://blog.csdn.net/u013453604/article/details/51686002
参考:
Building and Installing Instructions
Compiling MRPT
在第五部分另附上64位Windows 10、Visual Studio 2015 环境下编译mrpt的说明
提醒
需要说的是如果不想自己重新编译源码而是选择直接用apt-get方式安装的话运行如下命令即可,很快就安装完了
- 1
二、关于版本
mrpt1.4.0对应opencv3,所以使用opencv2的要相应下载mrpt1.3.2源码进行编译
三、下载源码
在github可以下载历史版本,查看版本树,点开“tags”栏即可找到mrpt1.3.2版本
https://github.com/MRPT/mrpt/tree/1.3.2
四、编译源码
1、安装依赖
- 1
- 2
- 3
- 4
- 5
- 6
注意如果上面的某些软件已经从源码编译了,请从上面移除它
2、CMake选项
新建一个空的build文件夹来存放编译生成的文件
- 1
- 2
- 3
- 4
- 5
- 6
- 7
这时出现CMake界面,如下图
如果你想编译的时候生成.dbg
文件用于debug那么需要将下面CMAKE_BUILD_TYPE
参数改为Debug
,默认为空(不需要Debug的时候可以不用管这个选项)
操作:用方向键将光标下移到该选项处,按回车键进入编辑模式,然后输入Debug
再按回车确认修改即可
- 1
选项改完之后按”c”配置,再按”g”在build文件夹生成Makefiles
如果上面选择了Debug,按“c”配置出现如下warning:
- 1
- 2
安装libwxgtk2.8-dbg
之后重新按”c”配置,再按”g”生成Makefiles即可
- 1
3、开始编译
开始编译,如果是四核CPU可以用-j
增加并行编译的任务数,-j4
表示允许四个任务并行编译,-j
后面不带数字则不限制任务数,不带-j
参数默认只是用单核心,编译时间最长,但是最稳妥
(一般并行编译任务数以CPU核心数目的两倍为宜,不宜太多,并且程序依赖关系设置不合理或过于保守会使并行编译失败)
- 1
如果遇到报错(比如内存分配错误)请把-j
后面的数字改小(比如-j4
)
如果你想把mrpt可执行程序和库安装到系统中(库被拷贝到/usr/local/lib/,可执行程序被拷贝到/usr/local/bin)运行如下命令,建议执行这一步
- 1
五、Windows下编译MRPT源码
首先说明一下环境:
64位Windows 10、Visual Studio 2015
最简的安装方式是只编译MRPT和wxWidgets,OpenCV自行安装
由于Visual Studio 2015 比较新,需要最新版本的MRPT和wxWidgets支持所以选择以下版本
wxWidgets 3.1.0 Windows 7Z (15 MB)
mrpt-1.4.0.tar.gz (20.1MB)
这两个包解压后放到D盘如下(最好不要放在C盘):
- 1
- 2
编译方式参考Compiling MRPT
先下载 CMake 3.6 Windows win64-x64 Installer,双击安装msi文件即可,其他下载见Get the Software
1、编译wxWidgets
wxWidgets是MRPT里面跟界面有关的库依赖的第三方库
利用Windows10左下角的搜索框找到名为“VS2015 x64 本机工具命令提示符”的命令行工具,cd到D:\wxWidgets-3.1.0\build\msw
目录下,运行以下命令行
64位:
- 1
- 2
如果是32位运行以下命令行:
- 1
- 2
你也可以不用命令行,直接到D:\wxWidgets-3.1.0\build\msw
目录找到wx_vc14.sln
用Visual Studio 2015 打开(可供选择的有wx_vcN.sln
,N=7~14八种配置,对应不同版本的VS),把这个解决方案里面的所有项目挨个编译一遍(貌似不能一次性编译所有的项目),由于不能保证这些项目是按正确的顺序编译的,你有可能要重复多次编译。
要注意的是只有VC10以上版本的Visual Studio才能编译wxWidgets64位版本
编译完后确保D:\wxWidgets-3.1.0\build\msw
下面有类似vc_x64_mswud
、vc_mswud
这样的文件夹,里面包含各种dll文件
2、编译MRPT
Windows下编译MRPT跟Ubuntu下类似,启动CMake GUI把源码路径设置为MRPT根目录,根目录下新建一个空的build文件夹作为编译目录,点configure,如果报错根据提示填写wxWidgets_ROOT_DIR的根目录路径,configure完了点generate成功了就能在build文件夹下生产一个VS解决方案,用VS打开MRPT.sln就能看到MRPT源码被加载进来。
然后选择Debug 或者 Release模式编译,如果出现
- 1
- 2
这样的报错,请选择某个module右键“属性”——“C/C++”——“命令行”——“其它选项”下面查看有没有类似/Zm100 /bigobj
这样的语句,可以把它改为/Zm1000 /bigobj
,如果还是不行请挨个编译一下module(将该module设为启动项进行编译即可),只要编译前几个再重新选择ALL BUILD为启动项重新编译即可,也可以把/Zm1000 /bigobj
删除
如果编译MRPT后使用MRPT编写项目遇到类似”丢失libmrpt-base140-dbg.dll”这样的报错请将包含该动态链接库文件的目录加到环境变量path里面
我的是:
- 1
六、报错
1、opencv相关报错
如果你运行MRPT的demo(比如icp-slam-live)遇上类似这样的错误:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
那么你还是老老实实安装一下OpenCV吧,MRPT对OpenCV的依赖说明如下:
Dependency: opencv
- 1
- 2
- 3
- 4
- 5
- 6
如果Windows下用.exe
文件安装OpenCV,MRPT无法找到OpenCV的库文件可以试试从源码编译一下OpenCV
Windows下编译OpenCV源码请参考:
Installation in Windows
下载源码请到OpenCV > DOWNLOADS
选择OpenCV for Linux/Mac,比如opencv-2.4.13版本
然后解压,在根目录新建空的build文件夹,然后打开CMake GUI,分别设置源码路径和build路径,“configure”再“generate”,然后会在build文件夹下生产.sln
文件,用VS2015打开这个解决方案编译它就完了,记得编译完成之后把带.dll
的目录加到path环境变量里面