linux撤销编译,面试官:Linux下如何编译C程序?

本文转载自【微信公众号:嵌入式大杂烩】,经微信公众号授权转载,如需转载与原文作者联系

Windows下常用IDE来编译,Linux下直接使用gcc来编译,编译过程是Linux嵌入式编程的基础,也是嵌入式高频基础面试问题。

一、命令行编译及各个细分编译过程

hello.c示例代码:

#include

int main(void)

{

printf("Hello world\n");

return 0;

}

编译:

gcc hello.c -o hello

990f2454a32302b06e09f347a9fc5131.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

编译运行:

a4080a503340e2ab3ea8788d6cfd5e20.png

上面更细分编译过程的Makefile文件如下:

828e0d67f5db00a0e0381e5915d08c22.png

关于make及Makefile更多内容可查阅:

【Linux笔记】make工程管理工具(一)

【Linux笔记】make工程管理工具(二)

三、借助CMake生成Makefile

实际开发很少会像上面一样自己编写Makefile文件,可借助cmake工具来生成。

CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。

1、命令行操作

首先输入

cmake --version

命令查看cmake版本,若还没安装则执行如下命令安装:

sudo apt install cmake

9b896ef02f9b30f3903b73bfd42880c5.png

下面开始实验演示。我们的

cmake_test

文件夹下有一个

hello.c

文件,在同文件夹下创建一个

CMakeLists.txt

文件:

18f7819d28961697203713f3087a2e6a.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

执行结果如下:

e6a915fad0efbe29b9d09ea404722e68.png

关于

CMakeLists.txt

文件具体语法感兴趣的朋友可自行查阅资料进行学习。

2、使用cmake-gui

上述是在命令行下使用cmake生成Makefile进行进行编译的方法。我们也可以使用图形化界面来生成Makefile文件。cmake-gui是cmake的一个图形化工具。下面依旧以实例作为演示。

我们把上一小节的

CMakeLists.txt

hello.c

文件放入新创建的文件夹cmake-gui_test中:

63a6829bb717d2056af0c65343b9d7f5.png

在终端输入

cmake-gui

命令启动cmake-gu图形化工具。若未安装可输入如下命令进行安装:

sudo apt install cmake-qt-gui

如:

2a4f3b0220cdb056f873276cccc0f437.png

启动

cmake-gui

cfcbfd94a842ce943dc2814204f52515.png

89633d6cf13e62da1e4cb55344589e3f.png

3b2a923f38ad2fde3a090a5c91bde6c2.png

查看cmake-gui_test文件夹:

95a4efced74ebb4246f2c94a8fd11647.png

编译运行:

d0def0f80d335ca70b9d56d73289dcd4.png

举报/反馈

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值