Ubuntu 18.04 安装 PCL 1.14.1
在进行科研项目时,我们常常需要将 C++ 和 Python 结合起来编程。然而,每次将 PCL(Point Cloud Library)的内容添加到 CMakeLists.txt 文件中时都会报错。在深入分析后,我们推测可能是当前使用的 PCL 1.8 版本与现有程序不兼容。因此,我们决定尝试安装最新的 PCL 1.14.1 版本,以期望解决这些兼容性问题。
1. 卸载旧版本的 PCL:
首先,我们需要卸载系统中现有的 PCL 1.8 版本,以避免与新版本产生冲突。
sudo apt-get remove libpcl-dev
2. 安装依赖
sudo apt-get update
sudo apt-get install git build-essential linux-libc-dev
sudo apt-get install cmake cmake-gui
sudo apt-get install libusb-1.0-0-dev libusb-dev libudev-dev
sudo apt-get install mpi-default-dev openmpi-bin openmpi-common
sudo apt-get install libflann1.9 libflann-dev #这里改成1.9
sudo apt-get install libeigen3-dev
sudo apt-get install libboost-all-dev
sudo apt-get install libvtk7.1-qt libvtk7.1 libvtk7-qt-dev # 这里用7.1 不要用8以上的
sudo apt-get install libqhull* libgtest-dev
sudo apt-get install freeglut3-dev pkg-config
sudo apt-get install libxmu-dev libxi-dev
sudo apt-get install mono-complete
sudo apt-get install openjdk-8-jdk openjdk-8-jre# 安装OpenNI,OpenNI2
sudo apt-get install libopenni-dev
sudo apt-get install libopenni2-dev# 安装QT5:
sudo apt install qtcreator
sudo apt install qt5-default# 安装metslib
wget https://www.coin-or.org/download/source/metslib/metslib-0.5.3.tgz
tar xzvf metslib-0.5.3.tgz
cd metslib-0.5.3
./configure
make -j`nproc`
sudo make install
中间提示选择Y/N的全部选Y
3.下载最新版本的PCL库并编译
git clone https://github.com/PointCloudLibrary/pcl.git 或者git clone https://gitee.com/mirrors/pcl.git
如果需要指定版本,请你点击下面连接进行下载。
Releases · PointCloudLibrary/pcl · GitHubPoint Cloud Library (PCL). Contribute to PointCloudLibrary/pcl development by creating an account on GitHub.
https://github.com/PointCloudLibrary/pcl/releases例如:

选择source.zip

解压进入 pcl 文件夹:
cd pcl
# 切换到指定版本v1.14.1再编译
# git checkout pcl-1.14.1 # 也可以不要这一行命令,直接安装最新的版本
# 创建目录并进入目录
mkdir build && cd build#安装在系统目录
cmake .. \-DCMAKE_BUILD_TYPE=None \-DCMAKE_INSTALL_PREFIX=/usr/local \-DCMAKE_PREFIX_PATH=/usr/lib/x86_64-linux-gnu \-DFREETYPE_LIBRARY=/usr/lib/x86_64-linux-gnu/libfreetype.so \-DBUILD_GPU=ON \-DBUILD_apps=ON \-DBUILD_simulation=ON \-DBUILD_examples=ON#也可以安装在自己指定的目录,如下所示(主要是改下安装空间):
cmake .. \-DCMAKE_BUILD_TYPE=None \-DCMAKE_INSTALL_PREFIX=~/Programs/lib/PCL1141 \-DCMAKE_PREFIX_PATH=/usr/lib/x86_64-linux-gnu \-DFREETYPE_LIBRARY=/usr/lib/x86_64-linux-gnu/libfreetype.so \-DBUILD_GPU=ON \-DBUILD_apps=ON \-DBUILD_simulation=ON \-DBUILD_examples=ON# Orin 切换到 MAXN POWER MODE
# 进行编译
make -j`nproc`#编译完后,执行安装
sudo make install
make -j`nproc`成功界面

sudo make install 成功界面

问题1:
/usr/bin/ld: warning: //home/fairlee/anaconda3/lib/libicudata.so.73: unsupported GNU_PROPERTY_TYPE (5) type: 0xc0010001
/usr/bin/ld: warning: //home/fairlee/anaconda3/lib/libicudata.so.73: unsupported GNU_PROPERTY_TYPE (5) type: 0xc0010002
//home/fairlee/anaconda3/lib/libfontconfig.so.1: undefined reference to `FT_Done_MM_Var'
collect2: error: ld returned 1 exit status
tools/CMakeFiles/pcl_pcd_grabber_viewer.dir/build.make:170: recipe for target 'bin/pcl_pcd_grabber_viewer' failed
make[2]: *** [bin/pcl_pcd_grabber_viewer] Error 1
CMakeFiles/Makefile2:3197: recipe for target 'tools/CMakeFiles/pcl_pcd_grabber_viewer.dir/all' failed
make[1]: *** [tools/CMakeFiles/pcl_pcd_grabber_viewer.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....

解决方案:
这个错误可能是由于系统中存在多个版本的库,而编译器使用了不兼容的版本。在这种情况下,Anaconda环境中的库可能与系统库冲突。因此,完全移除Anaconda的影响: 临时重命名你的Anaconda目录,以确保系统不会使用任何Anaconda的库:

最后安装成功后,别忘了把文件名改回去!!!!!!!!!
4. 安装验证

CMakeLists.txt
cmake_minimum_required(VERSION 3.5 FATAL_ERROR)
project(pcl_version_check)# 设置C++标准
set(CMAKE_CXX_STANDARD 14)# 查找PCL包
find_package(PCL REQUIRED)# 添加PCL的头文件路径
include_directories(${PCL_INCLUDE_DIRS})# 添加PCL的库路径
link_directories(${PCL_LIBRARY_DIRS})# 添加编译选项
add_definitions(${PCL_DEFINITIONS})# 添加可执行文件
add_executable(pcl_version_check pcl_version_check.cpppcl_version_check.cpp)# 链接PCL库
target_link_libraries(pcl_version_check ${PCL_LIBRARIES})
pcl_version_check.cpp
#include <iostream>
#include <pcl/pcl_config.h>
#include <pcl/point_types.h>
#include <pcl/point_cloud.h>
#include <iostream>
#include <pcl/common/common_headers.h>
#include <pcl/io/pcd_io.h>
#include <pcl/visualization/pcl_visualizer.h>
#include <pcl/visualization/cloud_viewer.h>
#include <pcl/console/parse.h>int main() {std::cout << "PCL version: " << PCL_VERSION_PRETTY << std::endl;// 创建一个简单的点云对象来测试基本功能pcl::PointCloud<pcl::PointXYZ> cloud;std::cout << "Test PCL !" << std::endl;pcl::PointCloud<pcl::PointXYZRGB>::Ptr point_cloud_ptr (new pcl::PointCloud<pcl::PointXYZRGB>);uint8_t r(255), g(15), b(15);for (float z(-1.0); z <= 1.0; z += 0.05) {for (float angle(0.0); angle <= 360.0; angle += 5.0) {pcl::PointXYZRGB point;point.x = 0.5 * cosf (pcl::deg2rad(angle));point.y = sinf (pcl::deg2rad(angle));point.z = z;uint32_t rgb = (static_cast<uint32_t>(r) << 16 | static_cast<uint32_t>(g) << 8 | static_cast<uint32_t>(b));point.rgb = *reinterpret_cast<float*>(&rgb);point_cloud_ptr->points.push_back (point);}if (z < 0.0) {r -= 12;g += 12;}else {g -= 12;b += 12;}}point_cloud_ptr->width = (int) point_cloud_ptr->points.size ();point_cloud_ptr->height = 1;pcl::visualization::CloudViewer viewer ("test");viewer.showCloud(point_cloud_ptr);while (!viewer.wasStopped()){ };// 如果代码执行到这里没有错误,说明PCL基本功能正常std::cout << "PCL basic functionality test passed." << std::endl;return 0;
}
结果


致谢
ubuntu 18.04 安装PCL 1.12.1_the following subsystems will not be built:-- visu-CSDN博客
相关文章:
Ubuntu 18.04 安装 PCL 1.14.1
在进行科研项目时,我们常常需要将 C 和 Python 结合起来编程。然而,每次将 PCL(Point Cloud Library)的内容添加到 CMakeLists.txt 文件中时都会报错。在深入分析后,我们推测可能是当前使用的 PCL 1.8 版本与现有程序不…...
公司logo设计大全怎么找?直接帮你设计logo
公司logo设计大全怎么找?在品牌塑造的过程中,Logo无疑是至关重要的一环。一个优秀的Logo不仅能够有效传达公司的核心理念和品牌形象,还能在消费者心中留下深刻的印象。然而,对于许多初创公司或小型企业来说,制作出适合…...
如何调整C#中数组的大小
前言 数组存储多个相同类型的一种非常常用的数据结构。它长度是固定,也就是数组一旦创建大小就固定了。C# 数组不支持动态长度。那在C#中是否有方法可以调整数组大小呢?本文将通过示例介绍一种调整一维数组大小的方法。 方法 数组实例是从 System.Arr…...
通过言语和非言语检索线索描绘睡眠中的记忆再激活茗创科技茗创科技
摘要 睡眠通过重新激活新形成的记忆痕迹来巩固记忆。研究睡眠中记忆再激活的一种方法是让睡眠中的大脑再次暴露于听觉检索线索(定向记忆再激活范式)。然而,记忆线索的声学特性在多大程度上影响定向记忆再激活的有效性,目前还没有得到充分探索。本研究通…...
MDPI旗下SSCI最新影响因子目录出炉!“水刊“Sustainability表现如何?
本周投稿推荐 SSCI • 1区,4.0-5.0(无需返修,提交可录) EI • 各领域沾边均可(2天录用) CNKI • 7天录用-检索(急录友好) SCI&EI • 4区生物医学类,0.1-0.5&…...
Matlab基础篇:数据输入输出
前言 数据输入和输出是 Matlab 数据分析和处理的核心部分。良好的数据输入输出能够提高工作效率,并确保数据处理的准确性。本文将详细介绍 Matlab 数据输入输出的各种方法,包括导入和导出数据、数据处理和数据可视化。 一、导入数据 Matlab 提供了多种方…...
MySQL字典数据库设计与实现 ---项目实战
软件准备✍:Mysql与Navicat可视化命令大全 ----项目实战 文章前言部分 目录 一.摘要 二.设计内容 三.项目实现 一.摘要 本项目关注于字典数据库表结构的设计和数据管理。通过现有的sql文件,实现system_dict_type和system_dict_data两个数据表。随后…...
python数据分析——数据预处理
数据预处理 前言一、查看数据数据表的基本信息查看info()示例 查看数据表的大小shape()示例 数据格式的查看type()dtype()dtypes()示例一示例二 查看具体的数据分布describe()示例 二…...
【Python】使用matplotlib绘制图形(曲线图、条形图、饼图等)
文章目录 一、什么是matplotlib二、matplotlib 支持的图形三、如何使用matplotlib1. 安装matplotlib2. 导入matplotlib.pyplot3. 准备数据4. 绘制图形5. 定制图形6. 显示或保存图形7. (可选)使用subplots创建多个子图注意事项: 四、常见图形使…...
vue下载本地xls模版静态文件
需求导入的下载模版不想放在服务器放在前端本地下载静态资源最简单的方式直接访问 public 文件夹下的文件 方法一:使用静态文件路径 将文件放在 public 文件夹中: 把你的文件从 src/assets 移动到 public 文件夹。例如:public/template.xls。…...
手机开热点,里面的WPA2-Personal和WPA3-Personal的区别
WPA2-Personal和WPA3-Personal这两种协议都是用来保护无线网络安全的,但它们在加密强度和安全性方面有所不同。 WPA2-Personal (Wi-Fi Protected Access 2) WPA2是目前最广泛使用的Wi-Fi安全标准之一。它使用AES(Advanced Encryption Standard…...
算法课程笔记——点积叉积
算法课程笔记——点积叉积...
详解 | DigiCert EV代码签名证书
简介 DigiCert EV 代码签名证书是一种高级别的代码签名证书,它不仅提供了标准代码签名证书的所有安全特性,还增加了额外的身份验证流程,以确保软件开发者或发布者的身份得到最严格验证。这对于提升软件的信任度、防止恶意篡改和确保下载安全…...
pdf压缩大小,PDF压缩大小不影响清晰度
你是否曾为PDF文件过大而烦恼?想要分享或上传文件时,却因为它的体积而束手无策?别担心,今天我将为大家分享一些简单实用的 PDF 压缩技巧,让你的文件轻松压缩pdf。 打开“轻云处理pdf官网”, 的网站。然后上…...
项目管理必备工具:2024年十大软件排行榜
有效的工具不仅可以帮助团队保持组织性,还能显著提高项目完成率。选择合适的项目管理软件,对于实现这些目标至关重要。 在2024年的各大权威榜单中,排名前十的项目管理软件包括:PingCode、Worktile(国内)&am…...
SOLIDWORKS专业版2024价格
SOLIDWORKS Professional 专业版,带有 ECAD/MCAD 协作、自动成本估算、协作功能、设计和工程图检查、复杂的零部件库以及高级真实感渲染。 1. ECAD/MCAD协作:SOLIDWORKS专业版提供了强大的ECAD/MCAD协作功能,使得设计团队可以更高效地进行跨…...
【外快业务】百度网盘扫码源码系统部署过程记录。
视频地址:【【自动发货项目】电脑PC/移动端扫码登录百度网盘项目源码,支持多人组团购买源码】 https://www.bilibili.com/video/BV1oD421W7oj/?share_sourcecopy_web&vd_source74cf265c4965f8c17f8e89bd8c29408d 1.远程连接服务器执行,…...
lucene原理
一、正排索引 Lucene的基础层次结构由索引、段、文档、域、词五个部分组成。正向索引的生成即为基于Lucene的基础层次结构一级一级处理文档并分解域存储词的过程。 索引文件层级关系如图1所示: 索引:Lucene索引库包含了搜索文本的所有内容࿰…...
华为、H3C交换机常用巡检命令
一、硬件状态、IOS版本信息检查 • display clock:显示系统时间。 • display version:查看交换机的版本信息和最近一次重新启动的时间。 • display enviroment:显示设备温度。 • display device:显示单板运行状态。 • di…...
网络安全 DVWA通关指南 SQL Injection(SQL注入)
DVWA SQL Injection 文章目录 DVWA SQL InjectionLowMediumHighImpossible SQL注入漏洞基本原理 Web应用程序对用户输入的数据校验处理不严或者根本没有校验,致使用户可以拼接执行SQL命令。 可能导致数据泄露或数据破坏,缺乏可审计性,甚至导致…...
uniapp 对接腾讯云IM群组成员管理(增删改查)
UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...
Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...
OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...
【HarmonyOS 5】鸿蒙中Stage模型与FA模型详解
一、前言 在HarmonyOS 5的应用开发模型中,featureAbility是旧版FA模型(Feature Ability)的用法,Stage模型已采用全新的应用架构,推荐使用组件化的上下文获取方式,而非依赖featureAbility。 FA大概是API7之…...
海云安高敏捷信创白盒SCAP入选《中国网络安全细分领域产品名录》
近日,嘶吼安全产业研究院发布《中国网络安全细分领域产品名录》,海云安高敏捷信创白盒(SCAP)成功入选软件供应链安全领域产品名录。 在数字化转型加速的今天,网络安全已成为企业生存与发展的核心基石,为了解…...
boost::filesystem::path文件路径使用详解和示例
boost::filesystem::path 是 Boost 库中用于跨平台操作文件路径的类,封装了路径的拼接、分割、提取、判断等常用功能。下面是对它的使用详解,包括常用接口与完整示例。 1. 引入头文件与命名空间 #include <boost/filesystem.hpp> namespace fs b…...
【java面试】微服务篇
【java面试】微服务篇 一、总体框架二、Springcloud(一)Springcloud五大组件(二)服务注册和发现1、Eureka2、Nacos (三)负载均衡1、Ribbon负载均衡流程2、Ribbon负载均衡策略3、自定义负载均衡策略4、总结 …...
Win系统权限提升篇UAC绕过DLL劫持未引号路径可控服务全检项目
应用场景: 1、常规某个机器被钓鱼后门攻击后,我们需要做更高权限操作或权限维持等。 2、内网域中某个机器被钓鱼后门攻击后,我们需要对后续内网域做安全测试。 #Win10&11-BypassUAC自动提权-MSF&UACME 为了远程执行目标的exe或者b…...
