makefile文件管理
1、makefile
首先呢make在执行时,需要一个命名为makefile的文件。
makefile文件描述了整个工程的编译,连接等规则。
其中包括:工程的哪些源文件需要编译以及如何编译;
需要哦创建哪些库文件以及如何创建这些库文件,如何最后产生我们想要的可执行文件。
例程:
hello : main.o func1.o func2.o
gcc main.o func1.o func2.o -o hello
main.o : main.c
gcc main.c -o main.o
func1.o : func1.c
gcc func1.c -o func1.o
func2.o : func2.c
gcc func2.c -o func2.o
.PHONY : clean
clean:
rm -f hello main.o func1.o func2.o
这个例子连伪目标也说明了,其中伪目标会在后面有介绍~~
2、makefile(术语)
规则:
用于说明如何产生一个或者多个目标文件~~
格式:
targets : prerequisites
command
targets:目标;
prerequisites:依赖
command:命令(要有空格,就是按下TAB键)
例如:
main.o : main.c
gcc -c main.c
3、目标
在makefile中,规则的顺序是很重要的~~
因为在一个makefile钟只有一个最终目标,其他的目标都是被这个目标所连带出来的,所以一定要让make知道你的最终目标是什么~~
一般来说,定义在makefile中的目标可能会有很多,但是:
第一条规则中的目标将被确立为最终目标~~
4、文件名
make命令默认在当前目录下寻找名字为makefile或者Makefile的工程文件,当时当名字不为这两个指定的文件名时,可以用如下方法指定:
make -f 文件名
5、伪目标
makefile中把那些
没有任何依赖(也就是没有prerequisites~~),只有执行动作的目标
成为“伪目标”(phony targets)。
例如:
.PHONY : clean
clean:
rm -f hello main.o func1.o func2.o
就是删除这些文件,但是这个指令没有依赖哦~~
“.PHONY”将“clean”目标声明为伪目标~~
6、变量
最开始的例子可以这样写:
obj=main.o func1.o func2.o func3.o
hello : $(obj)
gcc $(obj) -o hello
对于多文件还是很方便的~~
在makefile中,存在系统默认的自动变化量:
▲ $^:代表所有的依赖文件
▲ $@:代表目标
▲ $<:代表第一个依赖文件
上面的还可以改写成这样:
hello : main.o func1.o func2.o
gcc $^ -o $@
7、杂项
makefile中“#”字符后的内容被视作注释。
在gcc前面加上@可以取消显示回显(就是不显示gcc这句话了~~)
makefile文件管理相关推荐
- Linux C基础——” Makefile “ 文件管理大师你拜访过嘛?
文章目录 Make简介: Makefile基本结构: 1. make是如何工作的 2.makefile文件中的依赖关系理解 3. Makefile书写规则 4. Makefile 基础的使用 3.ma ...
- makefile文件管理基本操作
目录 1. makefile基础规则 2. makefile的一个规则 3. makefile两个函数和clean 4. makefile3个自动变量和模式规则 练习一 练习二 C/C++Linux服 ...
- NASM、MASM浅谈
NASM汇编器和MASM汇编器一样,都可以生成适用于Win32平台的coff文件格式,这种文件格式可以被MS 的link.exe连接器连接成PE文件.通常,我们知道MASM可以通过includelib ...
- C语言实现http服务器(Linux)
这篇文章是我的生产实习报告,在Linux操作系统上实现的一个简单的HTTP服务器,也算是一个小项目.请大家多多指教. 一.实习目的 本次实习紧紧围绕Linux操作系统基础知识展开,主要学习了Linux ...
- 嵌入式阶段性学习总结
转眼间近四个月的学习就结束了,我的这个阶段的生活也画上了句号.回想近四个月的学习.工作和生活上,有过震撼.诧异.怀疑,也有此刻越来越多的探求和欣喜,我感受最多的是自我在不断的成长和走向成熟,一个不断发 ...
- makefile学习(转载)
该篇文章为转载,是对原作者系列文章的总汇加上标注. 支持原创,请移步陈浩大神博客: http://blog.csdn.net/haoel/article/details/2886 makefile很重 ...
- 详解Makefile 函数的语法与使用
使用函数: 在Makefile中可以使用函数来处理变量,从而让我们的命令或是规则更为的灵活和具有智能.make所支持的函数也不算很多,不过已经足够我们的操作了.函数调用后,函数的返回值可以当做变量来使 ...
- Linux makefile 教程
最近在学习Linux下的C编程,买了一本叫<Linux环境下的C编程指南>读到makefile就越看越迷糊,可能是我的理解能不行. 于是google到了以下这篇文章.通俗易懂.然后把它贴出 ...
- 跟我一起写 Makefile(整理版)
跟我一起写 Makefile 作者:陈皓 (博客地址:http://blog.csdn.net/haoe ...
最新文章
- 怎样打开win7和vista系统的telnet服务
- Visual Studio找不到adb.exe错误解决
- 都2021年了,输入法还能怎么玩出花?百度智慧输入:toB商业化!
- Computing--状态机
- iphone尺寸_iPhone折叠机概念图:屏幕双打孔,iPhone折叠机有多优秀!
- 如何将VMware ubuntu虚拟机磁盘增长改成自分配(未成功)
- MATLAB 牛顿迭代算法
- 【文章】你和自己聊过吗?你很重要
- KafkaConsumer.poll : Timeout must not be negative
- 2018年上半年读者最喜爱的异步新书TOP50
- Java Code Examples for org.apache.ibatis.annotations.Insert
- c语言图灵机算法,图灵机的时间化简概述(3/4)
- WIN7系统更新安装补丁“此更新不适用于你的计算机”解决办法
- 神州计算机u盘启动,神舟台式电脑怎么bios设置u盘启动教程
- PSP-DDR跳舞机模拟器制谱教程
- 使用js脚本实现网页版微信定时发送信息
- Problem C: 点在圆内吗?
- 0204隐函数及由参数方程所确定的函数的导数相关变化率-导数与微分
- 第二十章 Caché 命令大全 QUIT 命令
- 高性能 XC6SLX25T-2CSG324C(FPGA)现场可编程门阵列
热门文章
- mysql 编译cpu数量_适合MySQL的Xeon 55XX系列CPU编译参数
- python RandomTrees特征编码
- 解决seaborn绘制热力图使用科学记数法
- tomcat 9 无法启动_运维常见问题汇总tomcat篇
- c#重载和重写及运用
- bzoj 4393 Usaco Fruit Feast
- C语言-apache mod(模块开发)-采用apxs开发实战(centos7.2 linux篇)
- 实验五 数独游戏界面设置
- [erlang] mnesia
- Android入门:封装一个HTTP请求的辅助类