写一个makefile文件,当前目录有main.c lpc.a lpc.h,并且将main.c编译为可执行文件
时间: 2024-09-20 21:09:53 浏览: 55
当你需要使用Makefile来管理你的项目,特别是像你描述的情况那样,当前目录包含了源代码`main.c`,库文件`lpc.a`以及头文件`lpc.h`,你可以创建一个简单的Makefile来配置编译流程。下面是一个基本的Makefile示例:
```makefile
CC = gcc # 使用gcc作为默认编译器
OBJECTS = main.o # 预定义目标对象文件为main.c生成的.o文件
# 将main.c编译为main.o
main.o: main.c lpc.h
$(CC) -c $(CPPFLAGS) $(CFLAGS) -I. -o $@ main.c
# 综合并链接成可执行文件
all: main
main: main.o lpc.a
$(CC) -o $@ $(LDFLAGS) $^
clean:
rm -f *.o main
.PHONY: clean all
# 添加一个规则,当只输入"make"时,默认执行"all"任务
.DEFAULT_GOAL := all
```
在这个Makefile里:
1. `CC`变量指定使用的编译器(这里是GCC)。
2. `OBJECTS`定义了目标对象文件,即`main.o`。
3. `main.o`的依赖项是`main.c`和`lpc.h`,表示要先编译`main.c`。
4. `all`规则会编译`main.c`并链接`lpc.a`生成可执行文件`main`。
5. `clean`规则用于清除临时编译文件。
6. `%.o:`和`.PHONY:`行是为了支持直接运行`make`命令而不需要指定目标。
要运行这个Makefile,只需在终端中切换到该目录然后输入`make`,或者根据需要输入`make all`、`make clean`等命令。
阅读全文