静态库的例子"/>
makefile之生成动态库和静态库的例子
makefile之生成动态库和静态库的例子
Makefile示例,生成静态库(.a文件)和动态库(.so文件)的例子
# 定义编译器和编译选项
CC = gcc
CFLAGS = -Wall -Werror # 定义源文件列表
SRC = file1.c \ file2.c \ file3.c # 定义对象文件列表
OBJ = $(SRC:.c=.o) # 定义静态库名称
LIB_STATIC = libstatic.a # 定义动态库名称
LIB_SHARED = libshared.so # 默认目标,生成静态库和动态库
all: $(LIB_STATIC) $(LIB_SHARED) # 生成静态库
$(LIB_STATIC): $(OBJ) $(AR) rcs $(LIB_STATIC) $(OBJ) # 生成动态库
$(LIB_SHARED): $(OBJ) $(CC) -shared -o $(LIB_SHARED) $(OBJ) # 将每个源文件编译成对象文件
$(OBJ): $(SRC) $(CC) $(CFLAGS) -c $(@:.o=.c) # 清除生成的目标文件、对象文件和库文件
clean: rm -f $(OBJ) $(LIB_STATIC) $(LIB_SHARED)
CC = gcc - 定义编译器为gcc。CFLAGS = -Wall -Werror - 定义编译选项为-Wall(开启所有警告)和-Werror(将所有警告视为错误)。SRC = file1.c file2.c file3.c - 定义源文件列表,包含file1.c、file2.c和file3.c。OBJ = $(SRC:.c=.o) - 通过替换规则将源文件列表中的扩展名.c替换为扩展名.o,生成对象文件列表。LIB_STATIC = libstatic.a - 定义静态库的名称为libstatic.a。LIB_SHARED = libshared.so - 定义动态库的名称为libshared.so。all: $(LIB_STATIC) $(LIB_SHARED) - 定义默认目标为依赖于静态库和动态库的目标文件。$(LIB_STATIC): $(OBJ) - 定义静态库的依赖关系,它依赖于对象文件。$(LIB_SHARED): $(OBJ) - 定义动态库的依赖关系,它依赖于对象文件。$(OBJ): $(SRC) - 通过规则将每个源文件编译成对应的对象文件。$(CC) $(CFLAGS) -c $(@:.o=.c) - 使用指定的编译器和编译选项编译源文件,生成对应的对象文件。clean: - 定义一个清除目标,用于清除生成的目标文件、对象文件和库文件。rm -f $(OBJ) $(LIB_STATIC) $(LIB_SHARED) - 使用rm命令删除生成的目标文件、对象文件和库文件。
更多推荐
makefile之生成动态库和静态库的例子
发布评论