一定要搞明白make/makefile/catkin_make/cmake/Cmakelist
的关系,本质是链接文件去生成可执行文件
系统学习大家还是要自己学,主要给大家提供思路,学习大纲还有遇到的一些问题的解决方法,少走弯路
1.catkin编译系统
对于源代码包,我们只有编译才能在系统上运行。而Linux下的编译器有gcc、g++
,随着源文件的增加,直接用gcc/g++
命令的方式显得效率低下,人们开始用Makefile
来进行编译。然而随着工程体量的增大,Makefile
也不能满足需求,于是便出现了Cmake
工具。CMake
是对make工具的生成器,是更高层的工具,它简化了编译构建过程,能够管理大型项目,具有良好的扩展性。对于ROS这样大体量的平台来说,就采用的是CMake
,并且ROS对CMake
进行了扩展,于是便有了Catkin编译系统。
其实早期是rosbuild
,目前还支持使用,但是ros
的核心软件包都已经被转换为Catkin
1.1catkin_make 结构和特点
1.2catkin_make编译流程
source用来配置环境,不然roslaunch
找不到对应的包
1.3catkin_make文件系统
2.package
package也是ROS源代码存放的地方,任何ROS的代码无论是C++还是Python都要放到package中,这样才能正常的编译和运行。
一个package可以编译出来多个目标文件(ROS可执行程序、动态静态库、头文件等等)。
2.1package结构
2.2package指令
3.实操
点进源代码包后,把build/devel
两个包删了,在当前路径下进入终端
catkin_make
如果没有error,记得source配置环境,编译成功‘
以下是一些问题现象和解决方案
问题①
CMake Error at /opt/ros/noetic/share/catkin/cmake/catkinConfig.cmake:83 (find_package): Could not find a package configuration file provided by "catkin_virtualenv" with any of the following names: catkin_virtualenvConfig.cmake catkin_virtualenv-config.cmake Invoking "make cmake_check_build_system" failed
这是由于缺少包导致的
解决方案,在终端输入:
sudo apt-get install ros-noetic-catkin-virtualenv
注意:
1.error里面”_”下划线在解决代码里面用“-”分割符号
2.Ubuntu20.04是noetic Ubuntu18.04是melodic
3.有可能缺少好几个包,catkin_make多编译几次再下载几次包
问题②
在下载的时候
E:无法定位到软件包
原因很多,网络连接问题、ros
软件源、apt源过期等问题
解决方案:
查一遍list,这个很麻烦需要耐心,我没试过谨慎试
换源镜像,可以参考: