DST=libmyl.a SRC=f1.c f2.c OBJ=$(SRC:.c=.o) all: $(DST) %.o: %.c gcc -c $< $(DST): $(OBJ) ar crv $@ $^ clean: rm -f $(OBJ) $(DST) &>/dev/null install: all cp $(DST) /usr/lib rm $(DST) &>/dev/null uninstall: rm -f /usr/lib/$(DST) $(DST) &>/dev/null
时间: 2024-04-27 13:19:55 浏览: 139
dst.rar_DST
这是一个Makefile文件,用于编译静态库libmyl.a。具体解释如下:
- DST=libmyl.a:定义静态库的名称为libmyl.a。
- SRC=f1.c f2.c:定义源文件为f1.c和f2.c。
- OBJ=$(SRC:.c=.o):定义目标文件为f1.o和f2.o,这里使用了make中的替换功能,将.c替换为.o。
- all: $(DST):定义all为默认目标,依赖于静态库$(DST)。
- %.o: %.c:定义生成.o文件的规则,依赖于.c文件。
- gcc -c $<:生成目标文件,这里使用了make中的自动变量,$<表示依赖项中的第一个文件。
- $(DST): $(OBJ):生成静态库$(DST),依赖于目标文件$(OBJ)。
- ar crv $@ $^:打包静态库,这里使用了make中的自动变量,$@表示目标文件,$^表示依赖项中的所有文件。
- clean::定义清理目标,用于删除目标文件和静态库。
- rm -f $(OBJ) $(DST) &>/dev/null:删除目标文件和静态库,并将错误输出重定向到/dev/null。
- install: all:定义安装目标,依赖于默认目标。
- cp $(DST) /usr/lib:将静态库复制到/usr/lib目录。
- rm $(DST) &>/dev/null:删除静态库,并将错误输出重定向到/dev/null。
- uninstall::定义卸载目标。
- rm -f /usr/lib/$(DST) $(DST) &>/dev/null:删除/usr/lib目录下的静态库和当前目录下的静态库,并将错误输出重定向到/dev/null。
通过运行make命令,可以编译生成静态库libmyl.a。运行make clean可以清理生成的目标文件和静态库。运行make install可以将静态库安装到/usr/lib目录下,运行make uninstall可以将静态库卸载。
阅读全文