文章来源:嵌入式大杂烩
作者:ZhengNL
Windows下常用IDE来编译,Linux下直接使用gcc来编译,编译过程是Linux嵌入式编程的基础,也是嵌入式高频基础面试问题。
一、命令行编译及各个细分编译过程
hello.c示例代码:
#include int main(void){ printf("Hello world"); return 0;}
编译:
gcc hello.c -o hello
![33c45959057b1195636a8eac77b9ab52.png](https://img-blog.csdnimg.cn/img_convert/33c45959057b1195636a8eac77b9ab52.png)
如有必要,还需回答出细分的几个步骤:
gcc -E hello.c -o hello.i # 预处理阶段gcc -S hello.i -o hello.s # 编译阶段gcc -c hello.s -o hello.o # 汇编阶段gcc hello.o -o hello # 链接阶段
具体细节可查往期笔记:《C程序编译过程》
二、借助make来编译
少量文件时可以使用上面方法编译。源码文件较多时,可借用make工具。make通过解析Makefile文件来执行一些gcc命令进行编译。
首先得创建一个Makefile文件,如:
hello:hello.c gcc hello.c -o hello
编译运行:
![788e3052d484694d2db49999560a5456.png](https://img-blog.csdnimg.cn/img_convert/788e3052d484694d2db49999560a5456.png)
上面更细分编译过程的Makefile文件如下:
![f5e8ea35cfb749dc0eaac1ed9bc4b530.png](https://img-blog.csdnimg.cn/img_convert/f5e8ea35cfb749dc0eaac1ed9bc4b530.png)
关于make及Makefile更多内容可查阅:
【Linux笔记】make工程管理工具(一)
【Linux笔记】make工程管理工具(二)
三、借助CMake生成Makefile
实际开发很少会像上面一样自己编写Makefile文件,可借助cmake工具来生成。
CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。
1、命令行操作
首先输入cmake --version命令查看cmake版本,若还没安装则执行如下命令安装:
sudo apt install cmake
![03f8c8a815c0a3c9dcf48b05a85244d9.png](https://img-blog.csdnimg.cn/img_convert/03f8c8a815c0a3c9dcf48b05a85244d9.png)
下面开始实验演示。我们的cmake_test文件夹下有一个hello.c文件,在同文件夹下创建一个 CMakeLists.txt 文件:
![63741b6a16cbcf2845cda2580ccbf334.png](https://img-blog.csdnimg.cn/img_convert/63741b6a16cbcf2845cda2580ccbf334.png)
输入如下内容:
cmake_minimum_required (VERSION 3.10.2)project (cmake_test)add_executable(cmake_test hello.c)
然后在cmake_test目录下依次输入如下命令生成Makefile文件:
mkdir build # 创建build文件夹cd build # 进入build文件夹cmake ../ # 在cmake_test文件夹下生成Makefile
执行结果如下:
![92d86ed91148eeb855a61291cd486ec4.png](https://img-blog.csdnimg.cn/img_convert/92d86ed91148eeb855a61291cd486ec4.png)
关于CMakeLists.txt文件具体语法感兴趣的朋友可自行查阅资料进行学习。
2、使用cmake-gui
上述是在命令行下使用cmake生成Makefile进行进行编译的方法。我们也可以使用图形化界面来生成Makefile文件。cmake-gui是cmake的一个图形化工具。下面依旧以实例作为演示。
我们把上一小节的CMakeLists.txt 与hello.c文件放入新创建的文件夹cmake-gui_test中:
![767ceca6bb65f36111d2176faf9ddbb1.png](https://img-blog.csdnimg.cn/img_convert/767ceca6bb65f36111d2176faf9ddbb1.png)
在终端输入 cmake-gui 命令启动cmake-gu图形化工具。若未安装可输入如下命令进行安装:
sudo apt install cmake-qt-gui
如:
![cc7d8e3f9a4a5a8f0c50cbf895c16b5f.png](https://img-blog.csdnimg.cn/img_convert/cc7d8e3f9a4a5a8f0c50cbf895c16b5f.png)
启动cmake-gui:
![ca2b5ac022d0032d3c1facdbe4606f19.png](https://img-blog.csdnimg.cn/img_convert/ca2b5ac022d0032d3c1facdbe4606f19.png)
![f45ecfaa6c31ec1a9ee1ee8971e32f88.png](https://img-blog.csdnimg.cn/img_convert/f45ecfaa6c31ec1a9ee1ee8971e32f88.png)
![a908bc9691b3d0a750298c1069f4acfc.png](https://img-blog.csdnimg.cn/img_convert/a908bc9691b3d0a750298c1069f4acfc.png)
查看cmake-gui_test文件夹:
![4cd2d016532fcbc8ced3e02aa817694d.png](https://img-blog.csdnimg.cn/img_convert/4cd2d016532fcbc8ced3e02aa817694d.png)
编译运行:
![f9a18807e08c8ee3688875612a43af52.png](https://img-blog.csdnimg.cn/img_convert/f9a18807e08c8ee3688875612a43af52.png)
以上分享了一些编译的过程及方法,都是基础内容,需要熟练掌握。如果觉得文章对你有帮助,可以从原文渠道转发~
如果你也希望提升你的编程能力,了解C/C++ Linux更多知识,点击下方【了解更多】,接受牛人大牛们的指导,听听他们对写代码的建议,一起快乐学习,共同进步~