linux使用makefile怎么生成静态库
时间: 2024-09-10 07:03:22 浏览: 70
linux静态库生成demo工程
在Linux下使用Makefile生成静态库通常遵循以下步骤:
1. 首先需要编写源代码文件(如`module1.c`, `module2.c`等)和对应的头文件(如`module1.h`, `module2.h`等)。
2. 创建一个Makefile文件,该文件定义了编译规则。为了生成静态库(例如`libmylib.a`),通常会使用`ar`命令将编译好的目标文件(`.o`文件)打包成一个静态库文件。
3. 在Makefile中,你需要指定目标(静态库文件名),依赖(源代码文件和头文件),以及如何从依赖生成目标。使用`gcc`命令来编译源代码生成目标文件,然后使用`ar`命令来创建静态库。
一个简单的Makefile示例如下:
```makefile
# 定义静态库的名字
LIBNAME = libmylib.a
# 定义需要编译的源文件
OBJS = module1.o module2.o
# 默认目标
all: $(LIBNAME)
# 生成静态库的目标规则
$(LIBNAME): $(OBJS)
@echo "Creating library..."
@ar rcs $@ $^
# 编译源文件生成目标文件的规则
module1.o: module1.c module1.h
@echo "Compiling module1.c..."
@gcc -c module1.c -o $@
module2.o: module2.c module2.h
@echo "Compiling module2.c..."
@gcc -c module2.c -o $@
# 清理编译生成的文件
clean:
@echo "Cleaning up..."
@rm -f $(OBJS) $(LIBNAME)
```
在这个Makefile中,`all`是默认目标,它依赖于静态库`libmylib.a`。当执行`make`命令时,会调用相应的规则来编译源文件并生成静态库。`$(OBJS)`定义了要编译成目标文件的源文件列表。`$(LIBNAME)`是最终生成的静态库文件名。
要生成静态库,只需在终端运行`make`命令。如果要清理编译生成的文件,可以运行`make clean`。
阅读全文