视觉slam十四讲ch12 pcl库安装,以及运行程序报错_"视觉十四讲无法打开 源 文件 \"pcl/point_types.h"_Alex的博客-程序员宅基地

技术标签: slam  c++  

1.重要的事情说三遍

别用autoremove,别用autoremove,别用autoremove,如果你看到某篇博客写了要你卸载什么,重装什么,千万别用autoremove就行,具体原因百度会告诉你答案。我就是按照一篇博客里写的删除qt5用autorempve然后删除了很多重要的东西的,现在很后悔。。。

2.安装步骤主要参照这两篇博客:

https://blog.csdn.net/weixin_41070687/article/details/102841946

https://blog.csdn.net/lilywri823/article/details/86583269

3.问题:

make的时候出现如下错误:

/usr/lib/x86_64-linux-gnu/libSM.so: undefined reference to `uuid_generate@UUID_1.0'
/usr/lib/x86_64-linux-gnu/libSM.so: undefined reference to `uuid_unparse_lower@UUID_1.0'
collect2: error: ld returned 1 exit status
outofcore/tools/CMakeFiles/pcl_outofcore_viewer.dir/build.make:373: recipe for target 'bin/pcl_outofcore_viewer' failed
make[2]: *** [bin/pcl_outofcore_viewer] Error 1
CMakeFiles/Makefile2:1425: recipe for target 'outofcore/tools/CMakeFiles/pcl_outofcore_viewer.dir/all' failed
make[1]: *** [outofcore/tools/CMakeFiles/pcl_outofcore_viewer.dir/all] Error 2
Makefile:149: recipe for target 'all' failed
make: *** [all] Error 2

百度到了这篇博客:

https://www.cnblogs.com/BambooEatPanda/p/10682670.html

里面提到了这个链接:

https://stackoverflow.com/questions/45584275/getting-error-usr-lib-lib64-libsm-so-undefined-reference-to-uuid-unparse-l

我搜索过:libSM.so本身在计算机中。解决方案是从路径中删除anaconda lib文件夹,然后重新构建。具体步骤如下:

1.在你build的文件夹打开终端:

echo $PATH

我得到的输出是这样的:里面记录了path的路径:

/home/alexander/anaconda3/bin:/home/alexander/anaconda3/condabin:/opt/ros/kinetic/bin:/home/alexander/bin:/home/alexander/.local/bin:/root/anaconda3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

2.

删除里面所有和anaconda有关的路径,重新定义path:

PATH=/opt/ros/kinetic/bin:/home/alexander/bin:/home/alexander/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

3.查看修改结果:

echo $PATH
/opt/ros/kinetic/bin:/home/alexander/bin:/home/alexander/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

修改成功。

4.继续重新创建build文件夹,重新make。

5.在终端修改的好处是不会永久修改path,当你下次打开终端时,环境变量又变回之前没有修改的亚子。毕竟anaconda还是要用的嘛。

4.很不幸,结果依旧失败了。。最后选择了以下博客提供的终极解决方案:

博客写到原因可能是:undefined reference,本身是一个c++编译常见错误undefined reference to错误的解决方法中写到:

  1. 1. 另外注意一个问题,就是只要查找到第一个就会返回,后面的不会再查找. 
    2. 比如-L./A -L./B -lx 在A中有libx.a B中有libx.a和libx.so,
    3. 这个时候会使用在./A的libx.a 而不会遵循动态库优先的原则,
    4. 因为./A是先找到的,并且没有同名动态库存在
    

    虽然我已经从path中剔除了与anaconda相关的路径,但不知为何系统依旧会优先筛选anaconda。总之,把anaconda2/lib下的libuuid库文件移走就好了:

  2. ls ~/anaconda3/lib/libuuid*
    
  3. mkdir ~/anaconda3/libuuid
    
  4. mv ~/anaconda3/lib/libuuid* ~/anaconda3/libuuid
    

    终于迈过了这道坎,最后记得把文件再移回来。感谢这个博客的作者:

    https://blog.csdn.net/u014734886/article/details/93029349

5.到81%左右又出现了如下问题:

/home/alexander/anaconda3/lib/libpng16.so.16: undefined reference to `inflateValidate@ZLIB_1.2.9'
collect2: error: ld returned 1 exit status
apps/CMakeFiles/pcl_pcd_video_player.dir/build.make:229: recipe for target 'bin/pcl_pcd_video_player' failed
make[2]: *** [bin/pcl_pcd_video_player] Error 1
CMakeFiles/Makefile2:8613: recipe for target 'apps/CMakeFiles/pcl_pcd_video_player.dir/all' failed
make[1]: *** [apps/CMakeFiles/pcl_pcd_video_player.dir/all] Error 2
Makefile:149: recipe for target 'all' failed
make: *** [all] Error 2

搜索了很久都没有找到解决方案,最后依旧用上述方法暴力破解了。

总结就是:anaconda环境很坑,很多包其实在原系统中安装就都不会报错。以后在遇到这种问题,首先考虑anaconda的原因!

6.运行程序pointcloud_mapping时报错:

Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)

参照此博客作了修改:

https://blog.csdn.net/luanfei3717/article/details/80268597?utm_source=blogxgwz6

1.加上头文件include<Eigen/StdVector>

2.将所有std::vectorEigen::?? 都改为std::vector<Eigen::??,Eigen::aligned_allocatorEigen::??>(不是真的问号,根据变量类型而定)

修改后成功!感谢老哥

6.运行程序surfel_mapping时报错:

terminate called after throwing an instance of 'std::logic_error'
  what():  basic_string::_M_construct null not valid

Process finished with exit code 134 (interrupted by signal 6: SIGABRT)

蠢了,这次的原因是.pcd文件路径没有找对。在configure里设置路径就OK了

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Alex_wise/article/details/104558290

智能推荐

GAMES101:作业2-程序员宅基地

GAMES101:作业2t那里我添加了一个负号之后图形才是正的Eigen::Matrix4f get_projection_matrix(float eye_fov, float aspect_ratio,float n, float f){ Eigen::Matrix4f projection = Eigen::Matrix4f::Identity(); float t = -tan((eye_fov/360)*MY_PI)*(abs

Android WebRTC 音视频开发总结(二)-程序员宅基地

本文转载:http://www.cnblogs.com/lingyunhu/p/3578405.html这节主要介绍WebRTCDemo的结构,以此来简单了解WebRTC的调用流程,转载请说明出处(博客园RTC.Blacker) 1、先看WebRTCDemo的代码结构,如下图:2、WebRTCDemo中音视频管理接口--MediaEngine,包括操作音频和视频的接

PHP中如何获取网站根目录物理路径-程序员宅基地

在php程序开发中经常需要获取当前网站的目录,我们可以通过常量定义获取站点根目录物理路径,方便在程序中使用。下面介绍几种常用的获取网站根目录的方法。php获取网站根目录方法一:<?phpdefine("WWWROOT",str_ireplace(str_replace("/","\\",$_SERVER['PHP_SELF']),'',__FILE__)."...

linux 下安装mysql以及忘记密码_linux mysql 安装后忘记密码-程序员宅基地

文章目录一、Linux下mysql安装二、mysql忘记密码、更改密码1.修改MySQL的配置文件总结一、Linux下mysql安装这篇文章讲的很好,各种操作对mysql讲的很全,已足够二、mysql忘记密码、更改密码1.修改MySQL的配置文件(1)关闭服务:service mysql stop(2)在[mysqld]下添加一行skip-grant-tables(默认为/etc/my.cnf 可以无密码进入数据库)vi /etc/my.cnf 初次进来是命令模式 敲代字母是命令 别瞎几_linux mysql 安装后忘记密码

leetcode-SQL-586. 订单最多的客户_菊头蝙蝠的博客-程序员宅基地

leetcode-SQL-586. 订单最多的客户题目解题1.不考虑并列第一的情况2.考虑并列第一的情况题目题目链接表: Orders+-----------------+----------+| Column Name | Type |+-----------------+----------+| order_number | int || customer_number | int |+-----------------+----------+

网络渗透实验三_渗透测试:对账号密码做大量枚举怎么做-程序员宅基地

渗透实验三实验目的:了解什么是XSS;了解XSS攻击实施,理解防御XSS攻击的方法;了解SQL注入的基本原理;掌握PHP脚本访问MySQL数据库的基本方法;掌握程序设计中避免出现SQL注入漏洞的基本方法;掌握网站配置。系统环境:Kali Linux 2、Windows Server网络环境:交换网络结构实验工具:Beef;AWVS(Acunetix Web Vulnarability Scanner);SqlMAP;DVWA实验步骤和内容:XSS部分:利用Beef劫持被攻击者客户端浏览器。_渗透测试:对账号密码做大量枚举怎么做

随便推点

总结:深入浅出探索Java体系知识-程序员宅基地

2019独角兽企业重金招聘Python工程师标准>>> ...

使用VIM将文件的其中的连续几行注释删除或者给其中的连续几行添加注释-程序员宅基地

一、使用VIM将文件的其中的连续几行注释删除1、用VIM打开一个文件,比如打开iniitab文件,以该文件的下面几行为例:#vim iniitab要显示行号,可以按esc并输入:set nu 。如下图2、此时,想要把1-10行的注释去掉,则按ctrl+v键,使用h、j上下方向键,移动光标,此时图形变为:可以看到上面1-10行的头一列被全部选中。3、此时,按键盘d...

drupal mysql配置文件_小型Drupal数据库备份以及大型站点MySQL备份策略分享_Gina虞的博客-程序员宅基地

中小站点简单备份策略基于drupal的中小行网站,我们可以使用backup_migrate模块,该模块提供了定期备份的功能,备份的时间、保留多少个备份等等设置,设置好之后,定期执行cron即可备份成功。 一般的Drupal小站,我们只需使用svn即可,在服务器端,我们把备份好的数据提交到svn,就可以达到备份的目的。由于Drupal的备份模块可以设置备份保留的文件份数,因此不会造成太多的备份文件,..._drupal mysql配置文件

行转列_max(if(month='jan',revenue,null))-程序员宅基地

部门表Department:编写一个 SQL 查询来重新格式化表,使得新的表中有一个部门 id 列和一些对应每个月的收入(revenue)列。select id , sum(case `month` when 'Jan' then revenue else null end) as Jan_Revenue , sum(case `month` when 'Feb' then revenue else null end) as Feb_Revenue ..._max(if(month='jan',revenue,null))

增量式与绝对值编码器的区别_增量式编码器与绝对值编码器区别-程序员宅基地

增量式与绝对值编码器的区别增量式编码器增量式编码器只能记住自己走了多少步,当然会有一个原点。在开机第一次走过原点一千,它是不知道自己的位置在什么地方。绝对值编码器只要上电就能知道自己现在所处的位置,绝对值编码器需要刻更多的线,成本高性能好,更贵。断电上电后,会记住原先的数值,不用回原点,绝对值相当于有一个CPU。增量式编码器是将位移转换成周期性电信号,再把电信号转换成计数脉冲,用脉冲的个..._增量式编码器与绝对值编码器区别

mac远程桌面连接windows_mac 本 远程连接windows-程序员宅基地

之前windows的笔记本直接用windows自带的远程桌面连接就行,现在换了mac没了远程桌面了,突然想起当时想用手机控制电脑,掏了一个splashtop的软件,好像要花点钱。看看mac上有没有,果然mac也有这款软件,我用的personal版的,personal版好像只能局域网连接:https://www.splashtop.com/downloads#pers很顺利就连接上了,还..._mac 本 远程连接windows