step2:以step_1 中的Makefile为基础使用.o作为依赖

源代码与step1中一致。

Makefile文件修改依赖为.o

  1. 把依赖文件由C文件改成.o文件,gcc编译命令也做了相应的修改。不过由于 C 编译成同名的.o 文件是 make 的默认规则,所以这部分内容通常不会写上去。

  2. 修改后的Makefile
    #hello_main:hello_main.c hello_func.c
    # gcc -o hello_main hello_main.c hello_func.c -I .
    #.PHONY:clean
    #clean:
    # rm -f *.o hello_main

     hello_main: hello_main.o hello_func.o
     	gcc -o hello_main hello_main.o hello_func.o -I .
     
     #Makefile默认规则,当*.o不存在时,默认回去在当前目录搜索.c编译。
     #因此以下两条可以不用写。
     #hello_main.o: hello_main.c
     #	gcc -c helo_main.c
     #hello_func.o: hello_func.c
     #	gcc -c hello_func.c 
    
  3. 编译

     mdxz_18@mdxz18:~/lzp/workdir/base_code/linux_app/makefile_step/step_2$ make
     cc    -c -o hello_main.o hello_main.c
     cc    -c -o hello_func.o hello_func.c
     gcc -o hello_main hello_main.o hello_func.o -I .
    
  4. 从 make 的输出可看到,它先执行了两条额外的“cc”编译命令,这是由 make 默认规则执行的,它们把 C 代码编译生成了同名的.o 文件,然后 make 根据 Makefile 的命令链接这两个文件得到最终目标文件 hello_main。

  5. 执行

     mdxz_18@mdxz18:~/lzp/workdir/base_code/linux_app/makefile_step/step_2$ ls
     hello_func.c  hello_func.o  hello_main.c  Makefile
     hello_func.h  hello_main    hello_main.o
     mdxz_18@mdxz18:~/lzp/workdir/base_code/linux_app/makefile_step/step_2$ ./hello_m                       ain
     hello ,world.
     output i=0.
     output i=1.
     output i=2.
     output i=3.
     output i=4.
     output i=5.
     output i=6.
     output i=7.
     output i=8.
     output i=9.
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值