用make构建库

时间:2014-12-27 21:44:06

标签: makefile

我的makefile包含以下内容:

libcommon.a : $(COMMON_CFILES:.c=.o) filter_scan.o filter_expr.o $(META_O_FILES)
        ar rcv $@ $^

所以我对这种语法有一些小问题。

  1. 什么是.a .so .o扩展?
  2. 意味着什么 $(COMMON_CFILES:.C =的.o)
  3. 具体来说,什么是.c和.o?

    (有一个COMMON_CFILES"标签",(我不知道如何命名)和.c文件列表)

    1. 什么是ar rcv $ @ $ ^?

1 个答案:

答案 0 :(得分:1)

.a是一个静态库。它们使用ar命令进行维护。

.so是一个共享库。

$(COMMON_CFILES:.c=.o)获取名为COMMON_CFILES的Makefile宏,将其拆分为单词,并在每个标记中替换.c .o。因此它将C源文件名转换为相应的目标文件名。

.c是C源文件的后缀。

ar rcv $@ $^使用其依赖项中的文件更新存档libcommon.a($@)。 ($^