写一个makefile,编译a.c和f.c
时间: 2023-04-02 18:01:05 浏览: 69
好的,以下是makefile的代码:
```
all: a.out
a.out: a.o f.o
gcc a.o f.o -o a.out
a.o: a.c
gcc -c a.c
f.o: f.c
gcc -c f.c
clean:
rm -f *.o a.out
```
这个makefile可以编译a.c和f.c,生成可执行文件a.out。如果需要重新编译,可以使用命令make clean清除之前的编译结果,然后再使用make命令重新编译。
相关问题
linux写makefile编译hello.c
首先,需要在终端中打开一个文本编辑器,比如说vim或者nano。
然后,输入以下内容:
```
CC=gcc
CFLAGS=-Wall
all: hello
hello: hello.c
$(CC) $(CFLAGS) -o hello hello.c
clean:
rm -f hello
```
这个Makefile的作用是编译一个名为hello的可执行文件,它依赖于hello.c这个源文件。当你在终端中输入make命令时,它会使用gcc编译器将hello.c编译成一个可执行文件。
如果你想要重新编译这个程序,可以使用make clean命令来删除旧的可执行文件,然后再次使用make命令来编译新的可执行文件。
希望这个回答能够帮到你!
写一个makefile实现phy_device.c编译为.m文件
以下是一个简单的 Makefile,可以将 phy_device.c 编译为 .m 文件:
```
# Makefile for compiling phy_device.c to .m file
CC = gcc
CFLAGS = -Wall -g
TARGET = phy_device
OBJS = $(TARGET).o
.PHONY: all clean
all: $(TARGET).m
$(TARGET).o: $(TARGET).c
$(CC) $(CFLAGS) -c $< -o $@
$(TARGET).m: $(TARGET).o
objcopy -O binary --only-section=.rodata $< $@
clean:
rm -f $(OBJS) $(TARGET).m
```
在这个 Makefile 中,首先定义了编译器 CC 和编译选项 CFLAGS。然后定义了目标文件名 TARGET 和目标文件的对象文件 OBJS。
接着,定义了一个 all 目标,它依赖于 $(TARGET).m 文件。$(TARGET).m 文件的生成规则是将 $(TARGET).o 文件中名为 ".rodata" 的 ELF 节(section)复制到一个二进制文件中,这个二进制文件就是 $(TARGET).m 文件。
最后,定义了一个 clean 目标,用于删除生成的目标文件和中间文件。
要编译成 .m 文件,只需要在命令行中执行 make 命令即可。