makefile工程模板 生成动态库和静态库
时间: 2023-08-11 16:10:08 浏览: 123
linux_ 几个常用makefile模板.pdf
以下是一个可以生成动态库和静态库的 Makefile 模板:
```makefile
CC = gcc
CFLAGS = -Wall -Werror -fpic
# 动态库相关
LIB_NAME = mylib
LIB_VERSION = 1.0.0
LIB_SO_NAME = $(LIB_NAME).so.$(LIB_VERSION)
LIB_OBJS = mylib.o
# 静态库相关
LIB_A_NAME = $(LIB_NAME).a
LIB_A_OBJS = mylib.o
.PHONY: all clean
all: $(LIB_SO_NAME) $(LIB_A_NAME)
$(LIB_SO_NAME): $(LIB_OBJS)
$(CC) -shared -o $@ $^
$(LIB_A_NAME): $(LIB_A_OBJS)
ar rcs $@ $^
%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@
clean:
rm -f $(LIB_SO_NAME) $(LIB_A_NAME) $(LIB_OBJS) $(LIB_A_OBJS)
```
在该模板中,我们先定义了编译器(`CC`)和编译选项(`CFLAGS`)。然后定义了动态库(`LIB_SO_NAME`)和静态库(`LIB_A_NAME`)的名称、版本号、以及包含的目标文件(`LIB_OBJS`和`LIB_A_OBJS`)。
接下来,我们使用了通配符来匹配所有的`.c`文件,并将其编译成`.o`文件。最后定义了`all`和`clean`这两个伪目标,其中`all`依赖于动态库和静态库的生成,`clean`用于清理生成的文件。
使用该模板,只需要将`.c`文件放在同一目录下,运行`make`命令即可生成动态库和静态库。
阅读全文