打包二进制 .deb 安装包

博客地址:https://www.cnblogs.com/zylyehuo/

  • Ubuntu 22.04
  • x86 架构

以打包 Super-LIO 为例

image

研发电脑上进行打包

1. 清理旧的编译产物,确保环境纯净

cd ~/super_lio_ws
rm -rf build/ install/ log/

2. Release模式 + merge-install 编译

cd ~/super_lio_ws
colcon build --merge-install --cmake-args -DCMAKE_BUILD_TYPE=Release

原理解释:--merge-install 会将 basic 和 super_lio 等所有包统一安装到 install/ 下全局的 bin, lib, share 目录中,而不是按照每个包独立分化文件夹。这极大地简化了闭源打包和运行时的动态库寻址。

3. 去除二进制文件中的符号表(防止反编译逆向)

cd ~/super_lio_ws
# 清除动态库符号表
find install/lib -name "*.so" -exec strip --strip-unneeded {} \;
# 清除可执行文件符号表 (可能存在于 lib/super_lio 等目录下)
find install/lib -type f -executable -exec strip --strip-all {} \;

4. 移除不需要的头文件(防泄露)

cd ~/super_lio_ws
rm -rf install/include/

5. 构建 .deb 包的目录结构

cd ~/super_lio_ws
# 创建临时工作目录 my_ros_deb_pkg,并建立目标安装路径 /opt/super_lio_ws
mkdir -p my_ros_deb_pkg/opt/super_lio_ws
# 创建 debian 控制信息目录
mkdir -p my_ros_deb_pkg/DEBIAN

6. 拷贝编译产物并编写 Control 文件

cd ~/super_lio_ws
cp -r install/* my_ros_deb_pkg/opt/super_lio_ws/
cd ~/super_lio_ws
gedit my_ros_deb_pkg/DEBIAN/control

填入以下内容

Package: super-lio-workspace
Version: 2.0.0
Architecture: amd64
Maintainer: LS.Wang <lswang@mail.ecust.edu.cn>
Description: Pre-compiled closed-source binary workspace for super_lio and basic.
Depends: ros-humble-rclcpp, ros-humble-std-msgs, ros-humble-sensor-msgs, ros-humble-pcl-ros, ros-humble-nav-msgs, libpcl-common1.12, libeigen3-dev

7. 打包生成最终的 .deb 文件

image

cd ~/super_lio_ws
dpkg-deb --build my_ros_deb_pkg super-lio-workspace_2.0.0_amd64.deb

在另一台设备上安装使用

sudo dpkg -i super-lio-workspace_2.0.0_amd64.deb
# 如果系统提示缺少底层依赖(如 pcl, rclcpp 等),运行下面这句自动补全:
sudo apt-get install -f
source /opt/super_lio_ws/setup.bash
ros2 launch super_lio <启动文件>.launch.py
posted @ 2026-06-24 19:40  zylyehuo  阅读(12)  评论(0)    收藏  举报