我有一个制作文件,我正在尝试使其更灵活。所以,如果我正在构建一个可执行文件,那么就会有 primary.c 和 primary.h。除此之外,我还需要将另外两对文件构建到可执行文件中:helper_funcs.c / helper_funcs.h 和 fork.c / fork.h。
CC = gcc
CFLAGS = -c -g -Wall -Wextra
SOURCES = fork.c helper_funcs.c
DEPS = primary.h fork.h helper_funcs.h
OBJECTS = $(SOURCES:.c=.o)
EXECUTABLE = primary
all: $(SOURCES) $(EXECUTABLE)
$(EXECUTABLE): $(OBJECTS)
$(CC) $(OBJECTS) -o $@
.c.o: $(DEPS)
$(CC) $(CFLAGS) $< -o $@
clean:
rm -f *.o
rm -f $(EXECUTABLE)
我的目标是编写这个 make 文件,这样无论我有多少额外的源文件,我所要做的就是将它们添加到 SOURCES 列表中,并且 Makefile 将处理编译和链接。
当我去编译它时,我得到以下信息:
rm -f *.o
rm -f primary
gcc -c -o fork.o fork.c -c -g -Wall -Wextra
gcc -c -o helper_funcs.o helper_funcs.c -c -g -Wall -Wextra
gcc -c -o primary.o primary.c -c -g -Wall -Wextra
primary.c: In function ‘build_state’:
primary.c:114: warning: implicit declaration of function ‘make_passive’
primary.c:120: warning: implicit declaration of function ‘make_active’
primary.c:127: warning: implicit declaration of function ‘string_builder’
primary.c: In function ‘main’:
primary.c:172: warning: implicit declaration of function ‘read_file’
gcc fork.o helper_funcs.o routed_LS.o -o routed_LS
它看不到的函数是那些包含在 helper_funcs.c 文件中的函数。它似乎正在接受fork.c中的功能,但我不明白区别在哪里。谁能帮我弄清楚如何清除这些错误?谢谢!