Linux系列之makefile的简单入门
2024-09-07 07:35:19
什么是makefile呢?
一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为
makefile就像一个Shell脚本一样,也可以执行操作系统的命令。
接下来用几个简单的小例子为大家介绍简单的makefile使用
例子1:
main: main.c
gcc main.c -o main
其中,main为目标生成文件,main.c为依赖文件
例子2:
main: main.c hello.o
gcc main.c hello.o -o main
hello.o: hello.c
gcc -c hello.c
clean :
rm -fr *.o main
其中,gcc min.c
: gcc编译器会对源文件min.c进行预处理, 编译, 以及链接, 最后生成可执行文件, 默认为a.out
gcc -c min.c
: gcc编译器会对源文件min.c进行预处理, 编译, 不进行链接, 最后生成的是object file (目标文件), 此处为min.o, 这属于编译过程的中间阶段, 再经过链接, 才能最终生成可执行文件.
注意:makefile都是从上往下看依赖条件进行的,比如目标文件main依赖的是main.c和
hello.o,然后hello.o依赖hello.c,执行gcc -c hello.c后生成hello.o。
例子3:
CC = gcc
CFLAGS = -c -Wall -g
OBJS = main.c hello.o helloo.o
all: main
main: $(OBJS)
$(CC) $^ -o $@
%.o: %.c
$(CC) $^ $(CFLAGS) -o $@
clean :
rm -fr *.o main
说明:执行make clean命令,可删除当前目录下所有的.o文件以及main
CC、CFLAGS、OBJS相当于定义一个变量名来代替后面的变量值
all表示可执行所有目标文件
all : hello another
hello : hello.c
gcc -o $@ $<
another : another.c
gcc -o $@ $<
$^ = 上一句依赖关系当中被依赖的文件
$@=目标名
% =通配符(代表相同的名字)
好了,今天的分享就到此为止了,谢谢观看!
最新文章
- 解决IE8 内置JSON.stringify,中文变unicode的问题
- DOM事件探秘
- ios crash 日志分析
- hdu1017
- C++ VARIANT 学习小记录
- How to solve GM MDI cannot complete the installation
- CSS Reset方法
- fetch()的用法
- iOS中 常用的mac终端指令汇总 技术分享
- Unity AssetBundle的生成、加载和热更新
- Sudoku POJ - 2676(DLX)
- [转]kaldi中的在线识别----Online Recognizers
- Leetcode 999. 车的可用捕获量
- tcp ,http .udp
- Webpack基础入门学习笔记
- DES c#加密后java解密
- MYSQL统计
- Liunx expect 基础
- 「Linux」centos7更新python3.6后yum报错问题
- HttpURLConnection传json