github自动编译c语言,想玩儿github开源,怎能对make、cmake一知半解?

本文介绍了C语言的编译过程,包括预处理、汇编、生成机器语言和链接。接着,通过对比使用gcc、makefile和cmake编译同一套代码的方式,探讨了makefile的优势和cmake的跨平台特性。通过示例,解释了如何编写makefile和CMakeLists.txt,以及如何使用cmake生成Makefile。最后,强调了cmake在管理编译信息方面的优雅之处。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果要接触源码,就不可避免地要触及 编译(python这种不需要编译的 解释性语言 源码除外!!!)为了完成编译动作,我们有众多的编译工具,很多情况下,编译工具的调用被集成到了 IDE 当中。然而,如果上手一些开源项目,我们会发现,更常见到的是「奇奇怪怪」的 MakeFile 和 CMakeLists.txt。我们参照 ReadMe 的教程,装这个装那个,然后运行同样奇奇怪怪的 make、cmake 命令……折腾半天或许成功完成了编译……但脑子是否还是一片混沌?别说定制修改MakeFile和CMakeLists.txt,甚至连自己做了些什么都无法记忆起来……Why?

因为我们没理清Ta们为什么存在!

认识 make & cmake,我们先看看可执行文件是如何生成的

一、从 main.c 到 可执行文件 输出 Hello World

我们编辑一份最简单的 main.c 文件(认真上过1节C语言课的同学该都可以看懂),并期望经过编译将其变为可执行文件,然后运行输出Hello World。

#include

int main(int argc, char * argv[]) {

printf("\nHello World!\n");

return 0;

}

Step1:预处理 Preprocess

预处理即将源文件中的宏、头文件进行 ”展开“。

参考命令:

gcc -E main.c -o main_preprocess.c

5c9ffb3506c0

预处理展开

Step2:汇编 Assembly

汇编可以将预处理后的代码转换为汇编语言,看看下面的汇编语言是不是特别「优美」捏!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值