makefile之生成动态库和静态库的例子

编程入门 行业动态 更新时间:2024-10-28 20:26:24

makefile之生成动态库和<a href=https://www.elefans.com/category/jswz/34/1771395.html style=静态库的例子"/>

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之生成动态库和静态库的例子

本文发布于:2023-12-08 07:43:15,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1672487.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:静态   例子   动态   makefile

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!