makefile的编写

    makefile 描述了整个工程的编译,链接过程。我们知道生成可执行文件的过程为  源文件--->.o文件-->可执行文件。源文件可能有多个文件,对应生成多个对象文件(。o文件),要生成可执行文件需要将这些对象文件进行链接。以下为一个makefile文件:

hello: main.o func1.o func2.o
          gcc main.o func1.o func2.o -o hello
main.o : main.c
          gcc –c main.c
func1.o : func1.c
         gcc –c func1.c
func2.o : func2.c
        gcc –c func2.c
.PHONY : clean
clean :
        rm –f hello main.o func1.o func2.o

makefile的规制为:

targets:prerequisites

            command

目标:依赖

            命令

     第一行和第二行的代码对应生成 最终目标hello,怎么生成hello呢,对应的依赖为几个目标文件main.o,func1.o,func2.o。使用的命令为gcc main.o func1.o func2.o -o hello

注意,命令这行需要以“TAB”键开始,即前面的空白不是按空格键形成的。后面几行代码对应生成。o文件的代码。

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

.PHONY : clean
clean :
rm –f hello main.o func1.o func2.o
“.PHONY” 将“clean”目标声明为伪目标

     写完makefile后使用make命令即可完成编译和链接工作。make命令默认在当前目录下寻找名字为makefile或者Makefile的工程文件,当名字不为这两者之一时,可以使用如下方法指定:
make –f 文件名

当执行上面的makefile程序时我们发现目标文件。o并没有被删除掉,为什么呢?因为直接使用make命令只生成了第一个目标,而伪目标clean并没有执行。只要执行make clean 命令就能执行makefile的clean目标。

    思考:如果要为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

   通过变量的方法来更改相关设定

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值