栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Linux的Makfile基础编译规则 :2021/10/1

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Linux的Makfile基础编译规则 :2021/10/1

一.下面是最简单的Makefile编译规则
#下面一句是说可执行文件main生成依赖于 one.c 和two.c
main : one.c two.c
gcc -o main one.o two.o #这句是通过one.o和two.o生成可执行文件main的命令
#下面一句是说one.o生成依赖于one.c
one.o : one.c
gcc -c one.c #这句是通过one.c生成可one.o文件的命令
#下面一句是说one.o生成依赖于two.c
two.o : two.c
gcc -c two.c #这句是通过one.c生成可one.o文件的命令
#下面一句是说如果你在终端输入命令make clean 会自动帮你执行rm one.o, rm two.o, rm main
clean :
rm one.o
rm two.o
rm main
二.下面是优化后的Makefile
#下面这句话是说定义一个变量叫obj可以用来替换one.o 和two.o
obj = one.o two.o
#下面一句话说执行文件main生成依赖于obj代表的东西 (注意:后的语句和$<的相关性)
main : $(obj)
gcc $< -o main #这局同于gcc -o main $< 也同 gcc $(obj) -o main 也同于 gcc -o main $(obj)
%.o :%.c
gcc -c $< #这句等同于gcc -c *.c
#当工程文件中有clean的文件,make clean将会失效,这时候定义clean为伪目标可#以避免该类
#问 题出现
.PHONY : clean
clean:
-rm *.o #在rm前面加 - 是不管出错没有都继续向下执行
-rm main
三.Makefile中的赋值符号
对于同一个变量:

  1. =取决于最后一次赋值
  2. :=不会使用后面的定义只会用前面的,谁先赋值用谁
  3. ?=如果之前已经赋值过现在就不赋值了,之前没有赋值现在就赋值
  4. +=追加,在之前变量的内容中追加新的内容,让他能代表更多的意义

今天只是总结了最基础的规则以后有空再继续补充

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/292176.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号