1.写出一个Makefile文件,采用交叉编译器,源文件为led8.c,目标文件为led8,使用led8.h头文件,静态编译,clean操作删除上次编译结果
时间: 2024-03-24 10:40:52 浏览: 202
下面是一个符合要求的Makefile文件:
```
CC = arm-linux-gcc
CFLAGS = -Wall -I.
LDFLAGS = -static
DEPS = led8.h
OBJ = led8.o
%.o: %.c $(DEPS)
$(CC) -c -o $@ $< $(CFLAGS)
led8: $(OBJ)
$(CC) -o $@ $^ $(LDFLAGS)
.PHONY: clean
clean:
rm -f led8 $(OBJ)
```
解释:
- `CC = arm-linux-gcc` 指定交叉编译器为 `arm-linux-gcc`。
- `CFLAGS = -Wall -I.` 指定编译选项,其中 `-Wall` 表示开启所有警告,`-I.` 表示将当前目录加入头文件搜索路径。
- `LDFLAGS = -static` 指定链接选项,其中 `-static` 表示静态链接。
- `DEPS = led8.h` 指定头文件依赖。
- `OBJ = led8.o` 指定目标文件依赖。
- `%.o: %.c $(DEPS)` 表示将所有 `.c` 文件编译为 `.o` 文件,并且依赖于头文件。
- `$(CC) -c -o $@ $< $(CFLAGS)` 表示编译命令,其中 `$@` 表示目标文件名,`$<` 表示第一个依赖文件名。
- `led8: $(OBJ)` 表示将目标文件链接为可执行文件 `led8`。
- `$(CC) -o $@ $^ $(LDFLAGS)` 表示链接命令,其中 `$^` 表示所有依赖文件名。
- `.PHONY: clean` 表示 `clean` 是一个伪目标。
- `clean: rm -f led8 $(OBJ)` 表示删除上次编译结果。
阅读全文