博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
GNU make
阅读量:4495 次
发布时间:2019-06-08

本文共 1129 字,大约阅读时间需要 3 分钟。

  Linux程序员必须学会使用GNU make来构建和管理自己的软件工程。GNU的make能够使整个软件工程的编译,连接只需要一个命令就可以完成。

  make在执行时,需要一个命名为Makefile的文件。Makefile文件描述了整个工程的编译,连接等规则。其中包括:工程中的哪些源文件需要编译以及如何编译;需要创建哪些库文件以及如何创建这些库文件,如何产生我们想要的可执行文件。

Makefile(术语)

规则:用于说明如何生成一个或多个目标文件,规则格式如下:

  Target: prerequisites

    command

  目标 依赖 命令

例子:main.o : main.c

                     gcc –c main.c(注意:命令需要以TAB键开始)

例:

make命令默认在当前目录下寻找名字为Makefile或者makefile的工程文件,当名字不为这两者之一时,可以使用如下方法指定: make –f 文件名

伪目标:Makefile中把那些没有任何依赖只有执行动作的目标称为”伪目标”(phony targets)。

  .PHONY:clear

  clear: rm  –f  hello  main.o  func1.o  func2.o

“.PHONY”将“clear”目标声明为伪目标

利用变量

Hello: main.o  func1.o  func2.o

       gcc main.o func1.o func2.o –o hello

思考1:如何要为hello目标添加一个依赖,如:func3.o,该如何修改?

答案1:hello:main.o func1.o func2.o func3.o

                     gcc main.o func1.o func2.o func3.o –o hello

答案2:obj=main.o func1.o func2.o func3.o

                     Hello:$(obj)

                            gcc $(obj) –o hello

 

在Makefile中,存在系统默认的自动化变量

  (1)$^:代表所有的依赖文件

  (2)$@:代表目标

  (3)$<:代表第一个依赖文件

例:hello: main.o func1.o func2.o

              gcc main.o fun1.o func2.o –o hello

->

  hello: main.o func1.o func2.o

         gcc $^ -o $@

makefile中“#”字符后的内容被视为注释

  hello:hello.c

         @gcc hello.c –o hello

@:取消回显

转载于:https://www.cnblogs.com/fengz/p/7039334.html

你可能感兴趣的文章
事件监听器
查看>>
设计模式之单例设计模式
查看>>
异常的基本概念
查看>>
vue 在发送axios请求时数据渲染问题
查看>>
动态链接库dll
查看>>
2018 Multi-University Training Contest 3 - HDU Contest
查看>>
组合数取模(转载)
查看>>
9.2NOIP模拟题
查看>>
整合SpringDataJpa
查看>>
vue过渡
查看>>
tcpreplay 博客目录
查看>>
oracle11g忘记sys密码
查看>>
文件各种上传,离不开的表单
查看>>
mysql查询插入优化
查看>>
hadoop备战:yarn框架的搭建(mapreduce2)
查看>>
微信公众号开发模式开启总结
查看>>
pygame-KidsCanCode系列jumpy-part2-加速度与摩擦力
查看>>
[elk]logstash的grok匹配逻辑grok+date+mutate
查看>>
准备Android面试
查看>>
界面与后台逻辑完全分离,单例模式,接口
查看>>