这个makefile有什么问题以及如何修复它?

时间:2017-03-30 16:54:49

标签: makefile

我有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'。

的函数。

这里有什么问题,我该如何解决?

1 个答案:

答案 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

假设您系统上的ccgcc的符号链接。