【发布时间】:2017-02-27 14:42:18
【问题描述】:
我有一个基本的 makefile 来编译编译共享库所需的 C 文件,我有一个错误,因为 makefile 无法识别:
SOURCES=/home/test/project/sources
OBJECTS=/home/test/project/objects
$(OBJECTS)/%.o:$(SOURCES)/%.c
$(CC) -fPIC -c $^ -o $@
sharedlib: $(OBJECTS)/%.o
$(CC) -shared -o libsharedlib.so $<
当我运行 make 时,我发现目标没有规则:sharedlib 需要 $(OBJECTS)/%.o。虽然规则是在 sharedlib 之前编写的。
【问题讨论】:
-
但是通配符意味着我一次编译所有文件?
-
我已经改了,但还是一样的问题。
-
您是否要同时编译所有对象的 libsharedlib.so?
-
是的。第二条规则是获取所有目标文件
标签: c makefile shared-libraries