makefile编译静态库
时间: 2024-09-21 11:03:00 浏览: 38
Makefile编译静态库的过程主要是定义规则来连接各个源文件生成库文件。以下是一个简单的例子,假设我们有一个名为`libmylib`的静态库,由`src/*.c`下的源文件组成:
1. **创建Makefile**:
创建一个名为`Makefile`的文本文件,内容如下:
```makefile
CC = gcc # 使用的编译器
AR = ar # 使用的归档工具
CFLAGS = -Wall -std=c99 # 编译选项
LDFLAGS = -static # 生成静态库
# 定义目标(静态库)
all: libmylib.a
# 将源文件编译为.o文件
obj/%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@
# 归档源文件为静态库
libmylib.a: $(wildcard src/*.o)
$(AR) crs $@ $+
# 清理规则
clean:
rm -rf *.o libmylib.a
```
2. **编译步骤**:
- 执行`make all`会按照Makefile规则,先编译每个.c源文件为.o文件,然后使用`$(AR)`工具(通常是`ar`)将这些.o文件归档为静态库`libmylib.a`。
3. **注意事项**:
- `$(wildcard src/*.o)`会匹配当前目录下`src`文件夹下的所有.o文件。
- `-static`标志告诉链接器生成一个可以独立运行的静态库,而不是依赖于动态链接。
4.
阅读全文