当前位置: 首页 > news >正文

ubuntu中有不同版本的pcl时的使用策略

在你的系统中存在两个不同版本的 PCL (Point Cloud Library):

  1. pcl-1.10 安装在 /usr/include/pcl-1.10(系统级安装)
  2. pcl-1.14 安装在 /usr/local/include/pcl-1.14(本地安装)

当编译时具体使用哪个版本,取决于以下几个因素:

1. 编译器查找顺序

编译器通常会按照以下顺序查找头文件:

  • 首先检查 -I 指定的路径
  • 然后检查 /usr/local/include
  • 最后检查 /usr/include

2. 链接器查找顺序

对于库文件(.so/.a),类似的顺序适用于 -L 指定的路径。

3. 最可能的情况

由于 /usr/local/include 优先级高于 /usr/include默认情况下编译器会使用 pcl-1.14

如何明确指定版本?

如果你想明确控制版本,可以通过以下方式:

CMake 项目:
find_package(PCL 1.14 REQUIRED)  # 明确指定版本
include_directories(${PCL_INCLUDE_DIRS})
target_link_libraries(your_target ${PCL_LIBRARIES})
手动编译时:
# 使用 pcl-1.14用
g++ -I/usr/local/include/pcl-1.14 -L/usr/local/lib -lpcl_common ...# 使用 pcl-1.10
g++ -I/usr/include/pcl-1.10 -L/usr/lib -lpcl_common ...

检查当前使用的版本

# 查看链接的库
ldd your_executable | grep pcl# 查看编译时的包含路径
g++ -v your_file.cpp 2>&1 | grep pcl

建议

  1. 如果项目没有特殊要求,建议使用更新的 pcl-1.14
  2. 如果出现兼容性问题,可以通过 CMake 或编译标志明确指定版本
  3. 长期建议统一版本,可以通过包管理器移除不需要的版本

两个版本共存本身不会导致问题,但混合使用不同版本的头文件和库可能会导致运行时错误。

冲突

然后我在ros包使用pcl的时候,其实就遇到了这样的问题:

/usr/bin/ld: warning: libpcl_filters.so.1.14, needed by /usr/local/lib/libpcl_segmentation.so, may conflict with libpcl_filters.so.1.10
/usr/bin/ld: warning: libpcl_common.so.1.14, needed by /usr/local/lib/libpcl_segmentation.so, may conflict with libpcl_common.so.1.10
[100%] Built target fastlio_mapping_localization
/usr/bin/ld: warning: libpcl_filters.so.1.14, needed by /usr/local/lib/libpcl_segmentation.so, may conflict with libpcl_filters.so.1.10
/usr/bin/ld: warning: libpcl_common.so.1.14, needed by /usr/local/lib/libpcl_segmentation.so, may conflict with libpcl_common.so.1.10

解决方案

http://www.dtcms.com/a/297500.html

相关文章:

  • Redis替代方案:腾讯云TDSQL-C内存优化实战,TPS秒上涨
  • [特殊字符] VLA 如何“绕过”手眼标定?—— 当机器人学会了“看一眼就动手”
  • 技术笔记 | RK3588 X11 桌面 GPU 性能实测
  • LIMA:大语言模型对齐的“少即是多”革命——原理、实验与范式重构
  • webRTC合并本地源码修改和官方更新
  • Python之--集合
  • 小米8(dipper)刷入kernelSU内核root定制rom系统教程以及安装LSPosed模块
  • 深度学习篇---数据预处理
  • Nginx 安全加固:如何阻止 IP 直接访问,只允许域名访问
  • 【数学建模|Matlab】数学建模「常用作图」示例
  • 中国移动融合企业网关H10G-13-中星微ZX296716处理器-破解教程
  • 解决Docker Compose报错
  • 【国内电子数据取证厂商龙信科技】谁是躲在“向日葵”后的
  • 基于深度学习的图像分类:使用DenseNet实现高效分类
  • GPU服务器与PC 集群(PC农场):科技算力双子星
  • 剪映将绿幕视频扣成透明背景视频转webm格式可以在网页上透明播放
  • 华为昇腾NPU卡 文生音频[T2A]大模型suno/bark模型推理使用
  • 【办公类-107-03】20250725通义万相2.1“动物拟人化”视频,优化关键词(图片转视频MP4转gif))
  • Windows Installer安全深度剖析
  • 安全、架构与 AI 的碰撞
  • AI小智源码分析——音频部分(一)
  • 在IPSEC、GRE网络下的MTU、TCP-MSS计算
  • LE AUDIO CIS/BIS音频传输时延计算方法
  • DP4871音频放大芯片3W功率单通道AB类立体声/音频放大器
  • Cursor替代品亚马逊出品Kiro下载
  • 探索 Sui 上 BTCfi 的各类资产
  • 【源力觉醒 创作者计划】ERNIE-4.5-VL-28B-A3B 模型详解:部署、测试与 Qwen3 深度对比测评
  • 浅析PCIe 6.0 ATS地址转换功能
  • 小白如何认识并处理Java异常?
  • C++ 多线程同步机制详解:互斥锁、条件变量与原子操作