我得到了两个 .o 文件和相应的 .h 文件用于分配,但我不知道如何让编译器使用 .o 文件。这是我目前使用的 Makefile:
TARGET = prog
LIBS = -lm
CC = gcc
CFLAGS = -g -Wall
.PHONY: default all clean
default: $(TARGET)
all: default
OBJECTS = $(patsubst %.c, %.o, $(wildcard *.c))
HEADERS = $(wildcard *.h)
%.o: %.c $(HEADERS)
$(CC) $(CFLAGS) -c $< -o $@
.PRECIOUS: $(TARGET) $(OBJECTS)
$(TARGET): $(OBJECTS)
$(CC) $(OBJECTS) -Wall $(LIBS) -o $@
clean:
-rm -f *.o
-rm -f $(TARGET)
我想我需要在末尾添加 file1.o 和 file2.o,但我不确定这是否正确。我确实在适当的时候在 C 源文件中有 .h 文件,所以我能想到的编译错误的唯一原因是 .o 文件没有用我的代码编译。
为提供的 .o 添加一个定义(例如):
PREBUILT_O = fludger.o ramble.o plexor.o
将目标规则更改为:
$(TARGET): $(OBJECTS) $(PREBUILT_O)
$(CC) $(OBJECTS) $(PREBUILT_O) $(LIBS) -o $@
我是一名优秀的程序员,十分优秀!