我的makefile包含以下内容:
libcommon.a : $(COMMON_CFILES:.c=.o) filter_scan.o filter_expr.o $(META_O_FILES)
ar rcv $@ $^
所以我对这种语法有一些小问题。
具体来说,什么是.c和.o?
(有一个COMMON_CFILES"标签",(我不知道如何命名)和.c文件列表)
答案 0 :(得分:1)
.a
是一个静态库。它们使用ar
命令进行维护。
.so
是一个共享库。
$(COMMON_CFILES:.c=.o)
获取名为COMMON_CFILES的Makefile宏,将其拆分为单词,并在每个标记中替换.c
.o
。因此它将C源文件名转换为相应的目标文件名。
.c
是C源文件的后缀。
ar rcv $@ $^
使用其依赖项中的文件更新存档libcommon.a($@
)。 ($^
)