高翔SLAM理论与实践公开课中介绍了一个族简单C++工程(HelloSLAM)的编译过程,我把这个过程整理成为了一张图片如下,并且在后面附上注释。
图解C++工程的编译原理
总的来说一个C++工程的编译和执行分成以下几个步骤

  • 预处理:也就是对#include等带#符号的头文件等进行处理,这里需要编写.h文件来把模块中定义的函数名及其使用方法(也就是接口)定义清楚,以便于在主程序中进行调用。
  • 编译,这个过程就是把.cpp编译成.o文件(机器码文件)的过程,当然只有主程序mail.cpp才会编译成可执行文件,其他的模块文件只会根据配置生成.a静态库文件或者.so动态库文件,用来供可执行文件调用。
  • 链接,我们需要在CMakeList.txt文件中通过target_link_library命令把模块和可执行文件进行链接。
  • 执行,在Linux中执行只需要在目录下输入文件名就可以了。

详情的话参考高翔SLAM理论与实践公开课,里面说的很清楚了。

相关文章: