openeuler 使用rpm打包ros的编译工具catkin_make

本文详细介绍如何在树莓派上安装openEuler系统并配置ROS环境,包括解决依赖问题、下载catkin源码包、编译安装以及将catkin打包成rpm文件的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考博客:https://blog.youkuaiyun.com/David_Han008/article/details/106966653

1 在树莓派上安装openeuler

按照罗老师的教程配置好了部分的ROS环境

链接地址:https://gitee.com/yunxiangluo/ros_openeuler?_from=gitee_search

其中用来安装pcl-ros的源fedora29的好像用不了了,我查找到的官方解释如下:

Fedora 29 及更旧版本已不再受官方支持,Fedora 官方已将 Fedora 29 及更旧版本的软件仓库从主镜像中移除,并转移至了 archive 镜像中。故Fedora 29 及更旧版本无法使用 TUNA 的镜像。请使用默认配置文件,以使 yum / dnf 自动获取可用的镜像源。

 不过好在我们不需要安装整个ros,只是需要打包catkin_make而已,所以这个可以跳过,按照罗老师的教程配置好相关环境即可。

2 下载catkin源码包

2.1 将ros-comm所包含的所有的pkg的url链接写入到melodic-ros_comm.rosinstall文件当中

在一个标准的ros工作空间下执行如下指令:

rosinstall_generator ros_comm --rosdistro melodic --deps --tar > melodic-ros_comm.rosinstall

2.2 根据melodic-ros_common.rosinstall文件当中的下载链接,将ros-comm当中的源码下载到src目录当中

wstool init -j8 src melodic-ros_comm.rosinstall

这个时候如果直接编译,会遇到各种依赖和库没有编译的情况,只留下catkin、CMakeLists.txt、cmake_modules即可:

然后切换到src的同级目录下,执行如下命令进行编译:

./src/catkin/bin/catkin_make

在编译的过程中可能会遇到一些依赖库没有安装的情况,使用pip安装即可;看到编译成功即可开始下一步。

3 catkin打包成rpm

3.1 rpm准备

安装rpmbuild工具

dnf install rpm-build

 在root路径下构建准备目录

mkdir -p ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}

3.2 源码准备

打包catkin所需的依赖库总共有7个,在pip官网下载.tar.gz的源码

在与catkin源码同级的目录(也就是工作空间的src目录)下新建一个3rdparty文件夹,将上述7个包解压后放进去,整个目录层级如下:

新建一个catkin-0.7.28文件夹,将整个src目录拖进去,然后使用如下指令压缩:

tar zcvf catkin-0.7.28.tar.gz catkin-0.7.28/

将压缩包拷贝至rpmbuild的源码目录下:

cp catkin-0.7.28.tar.gz /root/rpmbuild/SOURCES

3.3 spec文件编写

在SPECS目录下,新建一个catkin.spec文件,写入如下指令:

Name:    catkin
Version: 0.7.28
Release: 1
Summary: This is ROS melodic Catkin Package
License: GPL
URL: https://github.com/ros-gbp/catkin-release/archive/release/melodic/catkin
Source0: https://github.com/ros-gbp/catkin-release/archive/release/melodic/catkin-0.7.28.tar.gz
BuildRequires: gcc-c++
BuildRequires: cmake
BuildRequires:python-devel
BuildRequires:python-setuptools

%description
This is ROS melodic Catkin Package include catkin_make, catkin_init_workspace, and so on.



%prep

echo perp_step
pwd

%setup


pwd

%install
rm -rf %{buildroot}

echo install_step
pwd

mkdir -p %{buildroot}/usr/bin/
echo 999


cd src/3rdparty/

cd empy-3.3.4/
python setup.py install --user
cd ..

cd six-1.15.0/
python setup.py install --user
cd ..

cd setuptools_scm-4.1.2/
python setup.py install --user
cd ..

cd python-dateutil-2.8.1/
python setup.py install --user
cd ..

cd pyparsing-2.4.7/
python setup.py install --user
cd ..

cd docutils-0.16/
python setup.py install --user
cd ..

cd catkin_pkg-0.4.23/
python setup.py install --user
cd ..

cd ..
pwd

cd ..
pwd

./src/catkin/bin/catkin_make_isolated


pwd

install -m 777 src/catkin/bin/catkin_make %{buildroot}/usr/bin/catkin_make
install -m 777 src/catkin/bin/catkin_find %{buildroot}/usr/bin/catkin_find
install -m 777 src/catkin/bin/catkin_make_isolated %{buildroot}/usr/bin/catkin_make_isolated
install -m 777 src/catkin/bin/catkin_init_workspace %{buildroot}/usr/bin/catkin_init_workspace
install -m 777 src/catkin/bin/catkin_topological_order %{buildroot}/usr/bin/catkin_topological_order
install -m 777 src/catkin/bin/catkin_test_results %{buildroot}/usr/bin/catkin_test_results
echo ==========================================
echo %{buildroot}

mkdir -p %{buildroot}/opt/ros/melodic/
cp -r devel_isolated/* %{buildroot}/opt/ros/melodic/

%files
/opt/ros/melodic/*
/usr/bin/*

3.4 打包

在SPECS目录下执行如下命令:

rpmbuild -ba catkin.spec

打包过程中,在安装setuptools_scm-4.1.2库时可能会遇到如下报错:

将setuptools_scm-4.1.2下方的 python setup.py install --user 改为 python3 setup.py install --user ,即使用python3安装。

打包成功后在 /root/rpmbuild/RPMS/aarch64 目录下会有一个 catkin-0.7.28-1.aarch64.rpm 文件,这个就是我们最终想要的catkin的rpm包了。

4 验证catkin功能

使用如下指令安装前一步骤中生成的rpm包:

rpm -ivh catkin-0.7.28-1.aarch64.rpm

进入 /opt/ros/melodic 目录下,出现如下目录则证明安装完毕了

功能验证

source /opt/ros/melodic/setup.bash

mkdir -p catkin_ws/src

cd catkin_ws/src/

cd ..

catkin_make

验证通过,catkin打包成功!

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值