zoukankan      html  css  js  c++  java
  • makefile

    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文件

    关于变量

    变量的作用

     使makefile书写简单

    变量的定义

    变量的引用

      内部变量

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

      隐式规则

        *.c自动依赖 *.o文件  可以不写出来
  • 相关阅读:
    【题解】 bzoj1191: [HNOI2006]超级英雄Hero (二分图)
    谈谈Android项目框架的前世今生
    十四个好用的开源漏洞检测工具
    关于Java导出100万行数据到Excel的优化方案
    逗号分割符--字段中含逗号等情况的解析方法Java实现
    Java日期处理
    服务器&浏览器伪装的故事
    浏览器User-agent简史(user-agent)
    修改tomcat服务器banner的方法
    life_motto
  • 原文地址:https://www.cnblogs.com/Howbin/p/10655399.html
Copyright © 2011-2022 走看看