今天在编译开源OpenVslam时,在最后阶段出现如下问题。说是DBOW2的库招不到。查看了dbow2都是正常安装的,但是就是出问题。
![](https://img-blog.csdnimg.cn/2020030714255226.png)
然后我就找到了对应的cmakelist.txt文件,将LIBS地址打印了出来,如下:
![](https://img-blog.csdnimg.cn/20200307142908455.png)
打印结构如下:
![](https://img-blog.csdnimg.cn/20200307143023568.png)
显示NOTFOUND.
猜测可能是DBOW2_LIBS没有获取到地址,因此就将DBOW2的lib地址直接赋值给了BOW_LIBRAY
![](https://img-blog.csdnimg.cn/20200307143205850.png)
然后就编译成功了。
为什么DBOW2_LIBS没有获取地址,因为刚接触这一块,也不太清楚。
接着上次的更新。
昨天将DBOW2_LIBS的地址直接赋值后,cmake是通过了,但是在make时还是提示找不到对应的函数。
![](https://img-blog.csdnimg.cn/20200308163809850.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdwYW4wMTE=,size_16,color_FFFFFF,t_70)
所以感觉还是路径出了问题,在这里改了,cmakelist.txt别的地方还是找不到这个路径。后面就在DBOW2找路径的函数后面将路径打印出来
![](https://img-blog.csdnimg.cn/20200308164136210.png)
结果如下:
![](https://img-blog.csdnimg.cn/20200308164224984.png)
所以基本确定不是这里cmakelist.txt的问题。
后来仔细看了find_package的介绍,find_package找路径时是会去/usr/local/lib/cmake里面去找的,因此我在我的这个路径下找到了DBOW2文件。里面有一个DBOW2Config.cmake文件,
![](https://img-blog.csdnimg.cn/20200308164817643.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdwYW4wMTE=,size_16,color_FFFFFF,t_70)
然后我做了如下打印,
![](https://img-blog.csdnimg.cn/20200308164853608.png)
竟然还是找不到。在我的/usr/local/lib/路径下确实没有DBOW2这个文件,只有一个libdbow2.so的文件,然后做了如下改动。
![](https://img-blog.csdnimg.cn/20200308165033792.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdwYW4wMTE=,size_16,color_FFFFFF,t_70)
输出如下:
![](https://img-blog.csdnimg.cn/20200308165124491.png)
然后在cmake,make成功。
以前没弄过cmake,这次解决这个问题,也算是找到了调试cmake的感觉吧。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)