首页 > 其他 > 详细

makefile

时间:2019-04-04 16:33:39      阅读:166      评论:0      收藏:0      [点我收藏+]

makefile

makefile 的简单示例

假如有三个源文件program.c、pro1.c、pro2.c,program.c文件包含有自定义的头文件lib.h,要求生成可执行文件program。

 

技术分享图片
文件目录结构

 

    $(opt)=-g -Wall -c
    test: prgogram.o libtest.a
           gcc $< -L. -ltest -o $@
     libtest.a: pro1.o pro2.o
           ar rv $@ $^
     clean: 
           rm -f *.o   
~                      
  出现错误

 

技术分享图片
错误提示

 

       检查makefile
       拼写错误

 

技术分享图片
 
.

 

    仍然错误

 

技术分享图片
 

 

    修改关于链接库部分 
    失败

再探错误原因

 $(opt)=-g -Wall -c

这句话很明显是错误的

修正以后,进行测试

 

技术分享图片
测试结果

 

最终的makefile如下

  1 opt=-g -Wall
  2 test: program.o libtest.a
  3         gcc $^  -L. -ltest $(opt) -o $@:
  4 libtest.a: pro1.o pro2.o
  5         ar rv $@ $^
  6 clean: 
  7         rm -f *.o   

另一个练习题

一个程序包括以下内容。
三个C语言源文件:x.c y.c z.c。
一个头文件defs.h:x.c和y.c都使用了defs.h中的声明。
汇编语言文件:assmb.s
数学运算函数库:/home/mqc/lib/libm.so

作下图:

 

技术分享图片
结构依赖图

 

prog: x.o y.o z.o assmb.o 
    gcc $^ -L/home/mqc/lib/libm.so -lm -o $@
x.o: x.c defs.h
    gcc x.c -c
y.o: y.c defs.h
    gcc y.c -c
abssmb: abssmb.s
    gcc abssmb.s -c

make的基本知识及其变量

基本知识

  1. make //默认生成第一个目标文件
  2. make prog1.o //生成指定
  3. make -f makefile1 //指定读取makefile1
  4. make clean
    注意如果有同名文件 clean 存在,make clean 会出错
    以下为解决方案
    .PHONY:clean //避免因为clean文件出现,而无法执行删除命令
    clean:
    rm *.o
    技术分享图片

关于变量

变量的作用

 使makefile书写简单

变量的定义

变量的引用

  内部变量

    1. $@
    2. $^
    3. $<

  隐式规则

    *.c自动依赖 *.o文件  可以不写出来

makefile

原文:https://www.cnblogs.com/Howbin/p/10655399.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!