跟随这罗老师的tutorial配置好ros安装所需要的一些环境,
参考链接:https://gitee.com/yunxiangluo/ros_openeuler?_from=gitee_search
这篇博客目的是在openeuler源码编译ros-comm,然后在将rpm包进行打包,并且验证打包可执行程序
因此着重记录一下跟罗老师tutorial当中需要注意或者说不同的地方
在你的workspace当中执行:
rosinstall_generator ros_comm --rosdistro melodic --deps --tar > melodic-ros_comm.rosinstall
这条指令的目的是将ros-comm当中所有的52个pkg的url链接写入到melodic-ros_comm.rosinstall文件当中,里面会包含各个pkg的版本号,后续自己打包的时候,也是需要版本号的
wstool init -j8 src melodic-ros_comm.rosinstall
这条指令的目的是,根据melodic-ros_common.rosinstall文件当中的下载链接,将ros-comm当中的源码下载到src目录当中,
安装依赖库:
pip install empy
然后通过
./src/catkin/bin/catkin_make
进行catkin_make,编译工作区间,用来验证工作区间,来编译各个pkg
在执行catkin_make的时候,可能会出现python-empty这个库,可以通过pip install em来安装
构建源码打包的工程
soueces里面存放的是tar.gz结尾的压缩包,例如catkin-0.7.26.tar.gz
将文件夹进行压缩的命令:
tar zcvf catkin-0.7.26.tar.gz catkin-0.7.26/
将文件夹进行解压的命令
tar zxvf catkin-0.7.26.tar.gz catkin-0.7.26/
然后后面就是在SPEC文件夹下面创建catkin.sepc文件
Name: catkin
Version: 0.7.26
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.26.tar.gz
BuildRequires: gcc-c++
BuildRequires: cmake
#BuildRequires: python-empy
#BuildRequires: libpng-devel
#BuildRequires: libjpeg-turbo-devel
#BuildRequires: gcc-gfortran
#BuildRequires: openblas-devel
#BuildRequires: sqlite-devel
#BuildRequires: fftw-devel
#BuildRequires: boost-devel
#BuildRequires: python3-devel
#BuildRequires: boost-python3-devel
%description
This is ROS melodic Catkin Package include catkin_make, catkin_init_workspace, and so on.
%prep
%setup -q
#%build
#cat > hello-world2.sh < - 19.4-1
- Package init
打包城rpm 执行:
rpmbuild -ba catkin.spec
后续就要通过实际打包过程当中会出现那种报错,进行针对性的分析.
改变文件的所有权
chown -R davidhan:davidhan genmsg-0.5.16.tar.gz
安装编译好的rpm包进行验证
rpm -ivh xxx.rpm
注意点: 在安装一个rpm包之前,一定要确定这个rpm包之前没有安装过,如果安装过的话,需要用卸载rpm包的命令,先把这个包卸载掉,然后再重新安装.
rpm -e xxx
总结一些心得:针对每个包首先你需要知道这个包当中有那些文件需要放到/opt/ros的目录下面,如何知道呢?就需要看懂cmakelist.txt到底写的是那些东西,可以参考自己的ros系统,看那些文件安装到/opt/ros下面,然后模仿,需要注意那些.in,后缀名的文件,因为这些文件还没有完全变成.py或者.sh文件,需要进行系统的一部分环境变量去转换,在打包的时候会报错.