我有一个make文件,我试图让它更灵活。因此,如果我正在构建可执行文件,则有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中的函数,但我无法理解它的不同之处。 任何人都可以帮我弄清楚如何清除这些错误?谢谢!