C语言-makefile错误-未定义main函数的引用

3
    dealer: dealer.o readline.o car.o
        gcc -o dealer readline.o car.o

    dealer.o: dealer.c car.h readline.h
        gcc -c dealer.c

    readline.o: readline.c car.h readline.h
        gcc -c readline.c

    car.o: car.c car.h readline.h
        gcc -c car.c

make dealer
gcc -c dealer.c
gcc -c readline.c
gcc -c car.c
gcc -o dealer readline.o car.o
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../lib64/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
collect2: ld returned 1 exit status
make: *** [dealer] Error 1

我一直收到上述错误。我的dealer.c确实包含“main”。
有人知道发生了什么吗?

将“-Wall -g”传递给gcc。请参见此处:https://stackoverflow.com/a/44426536/841108 - Basile Starynkevitch
我怀疑 dealer.o 可能是链接到你的 dealer 二进制文件中的对象文件之一。编辑:哦,我没有注意到答案中已经涵盖了这一点。 - Christian Gibbons
谢谢您的建议!我会看一下。 - jchav
1个回答

6

您的连接代码:

gcc -o dealer readline.o car.o

没有包含dealer.o,这就解释了为什么缺少main。应该是:

gcc -o dealer dealer.o readline.o car.o

(指定-o dealer所示的最终可执行文件名称与目标文件dealer.o之间没有自动/猜测的关系。)

1
就是这样了!谢谢你!!编辑:感谢您的编辑并解释事情。 - jchav

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接