我有 4 个文件:1.c、1.h、2.c、2.h>。 我需要一个 makefile,它将根据这 4 个文件创建一个动态库 (.so)。 我试过像这样编写一个 makefile:
库.so : 1.c 1.h 2.c 2.h
但是没有用。如果有人帮助我,那就太好了,谢谢。
最佳答案
有点像
CC=gcc
CFLAGS= -Wall -g -O -fPIC
RM= rm -f
.PHONY: all clean
all: library.so
clean:
$(RM) *.o *.so
library.so: 1.o 2.o
$(LINK.c) -shared $^ -o $@
1.o: 1.c 1.h 2.h
2.o: 2.c 1.h 2.h
但这是未经测试的!我假设 Linux 使用 GNU make , 和一个只包含你的库的源代码的目录(带有上面的 Makefile
),这可能是不好的做法 - 你可能想要一个测试用例 - (你可以有一个特殊的 Makefile
%.pic.o
的规则取决于 %.c
等...)
提示:使用make -p
来理解内置规则。然后 make --trace
或(使用 remake )remake -x
来更多地了解 make
正在做什么。
另请阅读 Drepper's paper: How to Write Shared Libraries , documentation of GNU make , Program Library HowTo , this answer , ...
关于c - 用于从现有文件创建 (.so) 文件的 makefile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26689759/