VTK与PCL源码编译(Ubuntu 20.04.6)

**1.**第一步:安装基础编译工具和依赖

bash 复制代码
# 更新系统
sudo apt update && sudo apt upgrade -y

# 安装编译工具和基础依赖
sudo apt install -y build-essential cmake-curses-gui git

# 安装 PCL 和 VTK 的底层依赖
sudo apt install -y libboost-all-dev libeigen3-dev libflann-dev \
                    libusb-1.0-0-dev libqhull-dev libopenni-dev \
                    libopenni2-dev
# 安装必要的 X11 开发包(ui)
sudo apt update
sudo apt install libx11-dev libxrandr-dev libxi-dev
# 安装QT5
sudo apt update
sudo apt install -y qt5-default qtbase5-dev qtdeclarative5-dev \
                    qtquickcontrols2-5-dev qml-module-qtquick2 \
                    libqt5quick5 libqt5quickwidgets5 \
                    qttools5-dev-tools qtpositioning5-dev \
                    qtmultimedia5-dev libqt5svg5-dev

# 安装 Qt5(注意:这里不能再用 qt5-default)
sudo apt install -y qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools \
                    libqt5opengl5-dev libqt5svg5-dev

# 安装其他可选依赖
sudo apt install -y libvtk7-dev   # 注意:这里安装的是系统自带的VTK 7,但仅用于满足PCL编译时的某些可选依赖检查,我们最终会覆盖它

第二步:编译安装 VTK 9.5

2.下载VTK 9.5源码并编译

bash 复制代码
# 下载源码
wget https://www.vtk.org/files/release/9.5/VTK-9.5.0.tar.gz
tar -xzf VTK-9.5.0.tar.gz
cd VTK-9.5.0

# 创建编译目录
mkdir build && cd build

# 配置(启用Qt支持,这是PCL可视化必须的)
cmake .. -DCMAKE_BUILD_TYPE=Release \
         -DVTK_GROUP_ENABLE_Qt=YES \
         -DVTK_MODULE_ENABLE_VTK_GUISupportQt=YES \
         -DVTK_MODULE_ENABLE_VTK_GUISupportQtOpenGL=YES \
         -DVTK_MODULE_ENABLE_VTK_ViewsQt=YES \
         -DVTK_OPENGL_HAS_EGL=OFF \
         -DVTK_USE_X=ON \
         -DCMAKE_INSTALL_PREFIX=/usr/local

解释:

  • cmake:配置工具,它会检查你的系统环境,并生成Makefile。

  • -DCMAKE_BUILD_TYPE=Release:编译为"发布"版本(优化后,运行更快)。

  • -DVTK_GROUP_ENABLE_Qt=YES:开启Qt支持(PCL的可视化需要VTK的Qt模块)。

  • -DCMAKE_INSTALL_PREFIX=/usr/local:指定安装目录为 /usr/local(这是Linux下用户自行编译软件的默认位置)。

  • ..:表示CMake配置文件(CMakeLists.txt)在上一级目录。

如果出现错误提示缺少某些包 ,比如 Could NOT find Qt5,说明你的Qt没装全。请用以下命令补装

sudo apt install qtbase5-dev libqt5x11extras5-dev

然后重新运行上面的 cmake 命令。

bash 复制代码
# 编译(-j后面的数字是你的CPU核心数,可以加快速度)
make -j4
sudo make install
sudo ldconfig
  • make:根据Makefile开始编译源代码。

  • -j$(nproc):让make使用你CPU的所有核心并行编译,可以大大加快速度。例如你的CPU是4核,它就会用 -j4

编译VTK需要较长时间 (大约20-40分钟,取决于电脑性能)。终端会不断滚动输出信息,看到100%就表示编译完成。

复制代码
sudo make install
  • sudo:需要管理员权限才能往 /usr/local 里写文件。

  • 这条命令会把编译好的库、头文件等复制到 /usr/local 下。

复制代码
sudo ldconfig
  • ldconfig:更新系统的共享库缓存,让新安装的VTK库能被系统找到。

VTK 9.5 安装完成! 可以用以下命令检查是否安装成功:

复制代码
ls /usr/local/lib/libvtk*   # 应该能看到很多 libvtk 开头的文件

第三步:编译安装 PCL 1.15

1.下载源码

bash 复制代码
cd ~
git clone https://github.com/PointCloudLibrary/pcl.git
cd pcl
git checkout pcl-1.15.0   # 切换到 1.15 版本标签

2.配置和编译

bash 复制代码
mkdir build && cd build

# 使用 ccmake 可以方便地检查和修改配置选项
ccmake ..
  • ccmake 是 cmake 的交互式文本界面,你可以方便地开关选项。

  • 输入命令后,终端会变成蓝色背景的界面,顶部显示各种选项。

配置步骤:

  1. c 键(configure),开始第一次配置。可能会弹出一些信息,按回车继续。

  2. 配置完成后,你会看到很多选项。我们需要调整几个关键项:

    • 找到 CMAKE_BUILD_TYPE,默认可能是空,按回车进入编辑,输入 Release,然后回车。

    • 找到 CMAKE_INSTALL_PREFIX,默认是 /usr/local,保持不动。

    • 找到 WITH_VTK,默认应该是 ON,如果不是,按回车把它切换为 ON

    • 找到 WITH_QT,同样切换为 ON

    • 其他选项保持默认即可。

  3. c 键再次配置(让新的设置生效)。

  4. 如果没有错误,按 g 键(generate)生成Makefile并退出。

如果配置过程中出现红色错误 ,通常是缺少依赖。例如提示 Could NOT find VTK,那说明我们的VTK安装可能有问题。请先检查VTK是否正确安装(执行 sudo ldconfig 后再试)。如果还是找不到,可以手动指定VTK路径:在ccmake界面按 t 键进入高级模式,找到 VTK_DIR,设置为 /usr/local/lib/cmake/vtk-9.5(具体路径根据你的安装位置调整)。

3.编译和安装

bash 复制代码
make -j$(nproc)
sudo make install
sudo ldconfig

三.如果VTK需要从新编译

要重新从头编译 VTK,你需要删除当前的 build 目录,然后重新创建并运行 CMake 配置,最后再次编译

bash 复制代码
1. 回到 VTK 源码根目录并删除旧的 build 文件夹

cd ~/VTK/VTK-9.5.0
rm -rf build

2. 创建新的 build 文件夹并进入

mkdir build
cd build

重新运行 CMake 配置(使用针对 ARM/Jetson 优化的配置)

cmake -DCMAKE_BUILD_TYPE=Release \
      -DVTK_GROUP_ENABLE_Qt=YES \
      -DVTK_MODULE_ENABLE_VTK_GUISupportQt=YES \
      -DVTK_OPENGL_HAS_EGL:BOOL=ON \
      -DVTK_USE_X:BOOL=OFF \
      -DCMAKE_INSTALL_PREFIX=/usr/local ..

make -j2   # 或者 make -j$(nproc) 如果你内存充足
sudo make install
sudo ldconfig

算法加速可以用:cuPCL(可选)

bash 复制代码
# 1. 克隆 NVIDIA 官方的 cuPCL 仓库
git clone https://github.com/NVIDIA-AI-IOT/cuPCL.git
cd cuPCL

# 2. 切换到适配你系统的分支 (Jetpack 5.x)
# 如果你的 Jetpack 是 5.x,应该有一个对应的分支,如果没有明确分支,main 分支通常也支持较新的版本。
# 你可以用 'git branch -a' 查看所有分支。假设我们使用 main 分支。
# git checkout jetpack5.x   # 如果有明确分支,请取消注释并执行

# 3. 编译 cuFilter 模块 (其中包含了 VoxelGrid)
cd cuFilter
make

编译成功后,你会在 cuFilter 目录下得到 libcufilter.so 库文件,以及对应的头文件(如 voxel_grid.h)。

第二步:修改你的项目配置

你需要告诉你的 CMake 项目去哪里找 cuPCL 的库和头文件。

  1. 将 cuPCL 添加到你的项目 :简单起见,你可以将整个 cuPCL 文件夹复制到你项目目录下(例如 /home/nvidia/Project/MarineSearchRescue/third_party/cuPCL)。

  2. 修改 CMakeLists.txt :在你的主 CMakeLists.txt 文件中,添加以下内容,找到 cuPCL 并链接它。

bash 复制代码
# 设置 cuPCL 的路径
set(CUPCL_ROOT "${CMAKE_SOURCE_DIR}/third_party/cuPCL" CACHE PATH "Path to cuPCL")
set(CUPCL_INCLUDE_DIR "${CUPCL_ROOT}/cuFilter")
set(CUPCL_LIBRARY "${CUPCL_ROOT}/cuFilter/libcufilter.so")

# 包含 cuPCL 的头文件目录
include_directories(${CUPCL_INCLUDE_DIR})

# ... 后面的 target_link_libraries 部分 ...
target_link_libraries(MarineSearchRescue
    ${PCL_LIBRARIES}
    ${OpenMP_CXX_LIBRARIES}
    ${CUPCL_LIBRARY}  # 链接 cuPCL 库
    # ... 其他库
)
相关推荐
EmbeddedCore2 小时前
轻量级消息防重模块全解析:从原理到高性能优化
linux·运维·服务器·嵌入式硬件
回到原点的码农2 小时前
Linux(CentOS)安装 MySQL
linux·mysql·centos
发光小北2 小时前
SG-UHF110 系列远距离超高频 RFID 读写器如何应用?
服务器·网络
smileNicky2 小时前
Linux 系列从多节点的catalina 日志中统计设备调用频次
java·linux·服务器
北方的流星3 小时前
华三交换机DHCP服务配置
运维·网络
PyHaVolask3 小时前
图片处理基础
运维·服务器
qing222222223 小时前
Linux中修改mac地址(重启后依然生效)
linux·服务器·macos
桦03 小时前
【Linux复习】:进程概念
linux·运维·服务器
Par@ish4 小时前
【局域网协议】通过ISE实现radius认证,AD 的TCP 3268端口在其中发挥什么作用
服务器·网络·tcp/ip