GTSAM安装matlab工具箱遇到的神坑
半夜一点钟睡不着,起来开始搞这个问题,写完记录,现在已经是凌晨四点了。。不过还好,问题解决了,也有所收获!熬夜伤身,保重身体!1、问题问题:我第一次安装GTSAM的时候没有安装它的matlab工具箱,现在想安装matlab工具箱,该怎么办?疑惑:1一开始想的是重装,但是说实话,Linux下我都不知道重装时需不需要先把原来装好的卸载了?make install会覆盖掉原来装好的吗?...
半夜一点钟睡不着,起来开始搞这个问题,写完记录,现在已经是凌晨四点了。。不过还好,问题解决了,也有所收获!熬夜伤身,保重身体!
1、问题
问题:我第一次安装GTSAM的时候没有安装它的matlab工具箱,现在想安装matlab工具箱,该怎么办?
疑惑:
1一开始想的是重装,但是说实话,Linux下我都不知道重装时需不需要先把原来装好的卸载了?make install会覆盖掉原来装好的吗?
2会不会有一个选项,我单单安装它的matlab工具箱就行了,这样就可以不破坏我之前的安装了
3我能说当初自己是怎么安装GTSAM的我都忘了,只是有个印象,貌似是因为很简单就没有做记录。。可是此一时彼一时,当时觉得简单,过了这么久早都忘完了,就不觉得简单了。(最终还是在官网上看了安装教程,确实简单。也想提醒一下自己,安装什么软件,先去官网看,实在看不懂再在网上搜)
顾虑:
选择重装,万一重装失败,原来装好的GTSAM无法还原,该咋办,这不是赔了夫人又折兵吗。。。
因为CMakeList.txt中GTSAM_INSTALL_MATLAB_TOOLBOX默认为OFF,也就是不安装matlab工具箱,所以我一开始安装的版本是没有matlab工具箱的。后来想着用matlab学习gtsam更方便,就想重新安装一下。根据官网所说的,只需要在CMakeList中把GTSAM_INSTALL_MATLAB_TOOLBOX设为ON就会安装matlab工具箱了。这么简单啊,走起。结果等待make install了差不多半个小时,还是老样子,matlab根本不能运行。
下载的gtsam压缩包,除了build文件夹是自己新建的用来放编译过程产生的文件,其他文件夹都是压缩包里自带的,它们并不是cmake make 之后生成的。意识到这点对我很重要,我之前一直以为我的gtsam就安装在了这个work文件夹下。
2、看《CMake实践》
然后我就趁着这个机会又看了《CMake实践》,知道了make install 默认安装到/usr/bin目录下,make install DESTDIR=/tmp/test 安装在/tmp/test/usr/bin下。install可以将任何东西都安装到指定目录,所以就是说我当前工程目录下的所有东西,其实都安装(有些例子、文档的安装相当于直接拷贝过去的)到了/usr/bin下。怪不得当我在根目录下搜索一个名字时,至少都会出现两个,一个在自己工程目录下,另一个就在系统目录下。
3、阅读官网安装说明
网上并没有搜索到这样问题。于是看官网安装详细说明寻找解决办法。
在安装选项说明里,有这么两项:
CMAKE_INSTALL_PREFIX
The install folder. The default is typically /usr/local/. To configure to install to your home directory, you could execute:
cmake -DCMAKE_INSTALL_PREFIX:PATH=$HOME ..
GTSAM_TOOLBOX_INSTALL_PATH
The Matlab toolbox will be installed in a subdirectory of this folder, called 'gtsam'.
cmake -DGTSAM_TOOLBOX_INSTALL_PATH:PATH=$HOME/toolbox ..
对CMake的不熟悉令我对这些配置有着天然的恐惧,觉得这些好麻烦,自己之前看《CMake实践》时就没搞懂这些配置的意义。(之前看了CMake实战,没有完全看懂,后来搁置,现在基本忘光了)
看到GTSAM_TOOLBOX_INSTALL_PATH,我以为需要自己指定路径不然不会生成toolbox文件夹,然后欢天喜地地以为自己找到问题所在了。然而并没有什么卵用,还是没有toolbox这个文件夹。
4、最终问题的解决来自于我无意间的一瞥。。。。
cmake命令会输出东西的,输出的信息除了Fatal error之外,其他的我从来没想着看过!!!无意间想看看cmake后这些长长的输出是什么东西,就过就发现了问题,我明明都设置了GTSAM_INSTALL_MATLAB_TOOLBOX为ON,cmake输出的信息却仍然是Install matlab toolbox : Disabled???到底是怎么回事?百思不得解。
然后又想了想,重新解压GTSAM压缩包,在解压后的纯净无污染文件夹里面先把GTSAM_INSTALL_MATLAB_TOOLBOX改为ON,然后输出就变为Enabled了!!!然后为了复现问题我又把这里的ON改为OFF,发现输出还是Enabled。。。
麻蛋心态炸了。涉及到知识盲区了,自己并不知道cmake一次之后,当需要再cmake时,如果更改了CMakeList.txt中的一些东西,是要删除build文件夹下所有文件的。。不然可能继续保持直线的配置??我也不知道原因,反正肯定要清空build文件夹。
然后make install 安装就成功了。
5、还有一处需要更改
在工程目录/gtsam/matlab下,有一个README-gtsam-toolbox.txt文件,是讲如何用这个matlat工具箱,其中有一点,需要删除libstdc++相关的问题
If you have a newer Ubuntu system, you must make a small modification to your
MATLAB installation, due to MATLAB being distributed with an old version of
the C++ standard library. Delete or rename all files starting with
'libstdc++' in your MATLAB installation directory, in paths:
/usr/local/MATLAB/[version]/sys/os/[system]/
/usr/local/MATLAB/[version]/bin/[system]/
6、总结
这个故事告诉我,熟悉一些基本工具是多么的重要,对于像我这种非计算机出身的程序员们,熟悉CMake,熟悉Linux是多么的重要。也不要太担心,慢慢积累,现在已经比以前知道的多很多了。
附上CMake实践pdf,希望遇到了同样的问题或者恰好看到这篇博客的同志们可以好好看看这个教程,不长,只有47页。写的的确很好,不过要完全看懂还是要看多遍,不要妄想一遍就看懂学会,不可能的,知识学习都会有一个从入门到慢慢熟悉的过程,所以不要急于求成,一步一步来,这句话也是对自己说的。
更多推荐
所有评论(0)