写一个makefile文件,当前目录有main.c lpc.c lpc.h将lpc生成静态文件,并且将main.c编译为可执行文件
时间: 2024-09-20 19:09:42 浏览: 58
一个基本的Makefile 文件可以按照以下结构来编写,用于满足您的需求:
```makefile
CC = gcc # 使用gcc作为默认的编译器
CFLAGS = -Wall -std=c99 # 添加一些编译选项
# 定义目标和对应的源文件及依赖
OBJS = main.o lpc.o
EXECUTABLE = main
# 将lpc编译为静态库
lpc_obj: lpc.c lpc.h
$(CC) $(CFLAGS) -c lpc.c -o lpc.o
# 将main.c编译为可执行文件,并链接lpc静态库
main: $(EXECUTABLE)
main: $(OBJS)
$(CC) $(CFLAGS) -o $@ $(OBJS) -lpc # -lpc表示链接静态库
# 清理规则,删除中间文件和可执行文件
clean:
rm -f *.o $(EXECUTABLE)
# 全局清理
distclean: clean
rm -f core Makefile
.PHONY: clean distclean
# 当前目录下默认运行make命令会构建可执行文件
all: main
# 如果只输入make,则等同于make all
```
这个Makefile 文件做了几件事情:
1. 配置了默认的编译器和一些编译选项。
2. 定义了两个目标:`lpc_obj` 和 `main`。
3. 指定了如何从源文件创建目标,比如如何将 `lpc.c` 编译成 `lpc.o` 并生成静态库,以及如何将 `main.c` 编译成可执行文件。
4. 提供了清理 (`clean`) 和更彻底清理 (`distclean`) 规则。
5. 设置了 "all" 目标,当不做特殊指定时,默认执行这个目标。
要使用这个Makefile,您需要在终端中切换到包含该文件的目录,然后输入 `make` 或者 `make main` 来执行相应的任务。如果想要执行清理操作,可以输入 `make clean`。
阅读全文