Linux编译时发生找不到程序的入口函数 main;usr/lib/crt1.o(.text+0x34): error: undefined reference to ‘main’
发生这个错是表示找不到程序的入口函数 main,入口函数 main 是程序执行的起点,没有它无法进行链接和执行。
当发生这个错误有三种情况:
-
一种是你真的没写
main
函数,所以编译时就会报这个错。然后你编译的文件真的是不需要main
函数,这时解决的方法就是,添加编译选项 -nostartfiles; -
一种是你
Makefile
里没有指定main.cpp
这个文件的路径,一般在编译时,这些.cpp
文件会作为依赖进行编译,当依赖里没有包main.cpp
的话,这样在编译时,并不会把main.cpp
包含进去一起编译。解决方法就是:
例如,你的main.cpp
放在当前目录下,就把${wildcard ./*.cpp}
放在最前面,相当于把包含 main 函数的源文件放在其他源文件的前面。 -
最后一种就是,你以上两步都操作正确了,但是你的 main 函数写错了,例如你有可能写成 mian,或者小括号写成中文的小括号等等。