makefile编译成动态库.so
时间: 2023-10-07 16:10:15 浏览: 213
在型的C/C++工程中,为了节省编译时间,一般会将一些不会改动的文件生成为动态库,也就是.so文件。可以使用make工具来实现自动化编译生成.so文件。当工程量很大的时候,手动写语句非常麻烦,所以我们可以使用make工具来自动化生成.so文件。只需要编写好makefile文件,然后在终端上输入make指令,make命令会自动查找makefile文件,并执行其中的规则,实现自动编译。
在生成.so文件时,可以先生成中间文件.o文件,也可以直接使用cpp文件生成.so文件。下面是一段示例的makefile文件,用于生成.so动态库:
```
target = liboper.so
cc = g++
srcs = $(wildcard ./src/*.cpp)
includes = -I./include/
OBJS = $(patsubst %.cpp, %.o, $(srcs))
CFLAGS = -std=c++11 -shared -fPIC
all: $(target)
$(target): $(OBJS)
$(cc) $(CFLAGS) $(OBJS) -o $@
%.o: %.cpp
$(cc) -c -pthread $(includes) $(CFLAGS) $^ -o $@
```
在这个示例中,makefile文件中定义了目标文件名(target)、编译器指令(cc)、源文件路径(srcs)、头文件路径(includes)、目标文件列表(OBJS)、编译选项(CFLAGS)等。通过make命令执行该makefile文件,会自动根据源文件生成目标文件(.o),然后将目标文件链接成动态库.so文件。
参考资料:
: 引用内容来源
: 引用内容来源
: 引用内容来源