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

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

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 -cy.o: y.c defs.h    gcc y.c -cabssmb: 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文件  可以不写出来

转载于:https://www.cnblogs.com/Howbin/p/10655399.html

你可能感兴趣的文章
MaskedTextBox控件实现输入验证
查看>>
设计模式-行为型模式-中介者模式
查看>>
mount: 192.168.70.178:/ failed, reason given by server: Permission denied 问题
查看>>
如何清除自动保存的远程目录登录密码
查看>>
ios UIWebView自定义Alert风格的弹框
查看>>
AVERAGE和averageif函数
查看>>
php调试工具xdebug相关参数
查看>>
C# 编程的几个建议
查看>>
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
查看>>
归并排序
查看>>
怪异的CheckedListBox数据绑定
查看>>
重写与重载 java
查看>>
对js闭包的粗浅理解
查看>>
理解C++对象内存布局
查看>>
算法总结之 在两个排序数组中找到第K小的数
查看>>
Dubbo原理
查看>>
让oracle做定时任务【转】
查看>>
C++自学教程第一课——你好世界,我是柠檬鲸。
查看>>
idea javamaven项目 连接sqlserver 数据库方法
查看>>
Nginx Fastcgi PATH_INFO urldecode问题
查看>>