C++编译出现错误(.text+0x20): undefined reference to `main'

# ./configure
# make
.....省略中间打印.....
/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
collect2: error: ld returned 1 exit status

为什么会报“undefined reference to `main'”?
当然我写了main函数。

最后清醒了一下脑子,发现自己是Makefile.am中的“-I选项”少包含了main函数所在的目录。

搜索过程中也发现别人有的说要"-L"要包含当前目录的"-L ."。那种情况是引用的动态库在当前目录。

也有人说少头文件的,少编译选项“-lrt -ldl”

总结

也就是出问题,要检查以下几个地方:
(1)Makefile有没有覆盖到main函数;(比如你把main函数赋值给一个变量MAINCPP,引用变量的时候没有使用$(MAINCPP),结果报错)
(2)有没有包含到需要的头文件目录;
(3)有没有包含到需要的库文件目录;
(4)有没有包含到".o"文件的目录。

原文地址:https://www.cnblogs.com/bugutian/p/13164375.html