我有4个文件:pass1.c,pass2.c,main.c和header1.h。
其中每个文件都包含文件header.h
我写了以下makefile:
assembler: pass1.o pass2.o main.o
gcc pass1.o pass2.o -o assembler
pass1.o: pass1.c
gcc -c -ansi -Wall -pedantic pass1.c -o pass1.o
pass2.o: pass2.c
gcc -c -ansi -Wall -pedantic pass2.c -o pass2.o
main.o: main.c
gcc -c -ansi -Wall -pedantic main.c -o main.o
当我做的时候,我收到了以下错误:
/usr/lib/gcc/x86_64-linux-gnu/6/../../../x86_64-linux-gnu/Scrt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
collect2: error: ld returned 1 exit status
makefile:2: recipe for target 'assembler' failed
make: *** [assembler] Error 1
请注意,我没有写一个名为' start'。
的函数。这里有什么问题,我该如何解决?
答案 0 :(得分:0)
gcc pass1.o pass2.o -o assembler
应该是
gcc main.o pass1.o pass2.o -o assembler
将main.c
重命名为assembler.c
,您的整个 makefile可以压缩到
CFLAGS := -ansi -Wall -pedantic
objects := assembler.o pass1.o pass2.o
assembler: $(objects)
$(objects): header.h
假设您系统上的cc
是gcc
的符号链接。