【 linux 】认识make和makefile


目录

[1. gcc编译器和条件编译](#1. gcc编译器和条件编译)

2.make和makefile


1. gcc编译器和条件编译

我们知道在运行一个程序时需要经过预处理,编译,汇编,链接生成可执行文件。预处理主要进行展开头文件,宏替换,条件编译,删除注释等操作。gcc是一种编译器,通过命令行的形式对文件进行操作。

cs 复制代码
gcc -E code.c -o code.i

编译会进行语法,语义分析并进行代码优化,并翻译成cpu架构可理解的汇编代码

cs 复制代码
gcc -S code.i -o code.s

汇编会将汇编指令翻译成二进制机器码,也就是机器可识别的代码

cs 复制代码
gcc -c code.s -o code.o

链接就是绑定一些动静态库文件。库是一套方法或数据集,提供接口和功能,如果我们的程序中使用了库中方法就要链接起来。在linux中动态库的文件.so结尾,静态库.a结尾。

cs 复制代码
gcc code -o code

条件编译怎么用

可以记住一点,预处理的本质就是对代码进行裁剪,类似于if条件语句,根据宏定义来对代码进行裁剪。

2.make和makefile

make是一个命令,自动读取makefile,按照规则进行编译,makefile是一个文本文件,写好了编译规则。两者搭配用于自动化编译c,c++项目。

cs 复制代码
 myfile:myfile.c
     gcc myfile.c -o myfile
 _PHONY:clean
 clean:
     rm -f myfile

如果你文件改动了需要再次make进行更新操作,make分不清目标是文件还是命令,这就是_PHONY的作用,它是一个伪目标,代表不生成任何文件,只去执行。删除文件的操作就是make clean

相关推荐
tanglinS21 分钟前
工业陶瓷在半导体设备里都用哪里?氮化铝基板与氮化硅结构件的静电无尘角色
大数据·运维·人工智能·自动化·材质
highreport23 分钟前
HighReport报表工具定时调度和邮件定时发送
运维·服务器·数据库
TonyLee01739 分钟前
Claude Code + DeepSeek:服务器安装与使用笔记
linux·服务器·deepseek·claude code
St_rive41 分钟前
Pytest skip&&skipif跳过⽤例
运维·服务器·pytest
buhuizhiyuci1 小时前
【Linux 篇】数字世界的水流蓄水池 —— IO 缓冲区机制深度实战解析
linux·运维·服务器·c++
贝锐1 小时前
多校区互通、临时联网、远程运维,校园网络升级用蒲公英更省心!
运维·组网
骇客野人1 小时前
Linux 服务器 Python 版 MCP 服务部署整体方案(适配 Claude/Cursor/自研Agent)
linux·服务器·python
梦想的旅途21 小时前
企业微信 API 二次开发:私域场景下的自动化裂变
运维·自动化·企业微信
游戏开发爱好者81 小时前
App Store 上传 IPA 自动化,.p8 密钥认证与 CI/CD 接入实战
android·运维·ci/cd·小程序·uni-app·自动化·iphone
天疆说2 小时前
04 稳定性与性能调优实录:OOM 崩溃、并发槽位、前缀缓存与 DSpark 调参
linux·运维·缓存