clang编译代码报错:`_start': (.text+0x24): undefined reference to `main'

1. 说明

使用clang++10.1编译报错:

/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crt1.o: in function `_start':
(.text+0x24): undefined reference to `main'
clang-10: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [CMakeFiles/main.dir/build.make:104: main] Error 1
make[1]: *** [CMakeFiles/Makefile2:97: CMakeFiles/main.dir/all] Error 2
make: *** [Makefile:103: all] Error 2

2.分析

  • 2.1 编译器提示的很清楚: 没有main函数。
  • 2.2 我的CMakeLists.txt代码:
......
## 这段代码是报错提示相关的 ##

add_executable(main ${sp_src} ${sp_inc})
target_sources(main PRIVATE ${sp_src} ${sp_inc} )
....  

说明: ${sp_src}的源文件代码中,没有main函数。 因为这里是要创建一个可执行程序,所以修改方式: 将正确的含入口函数main的源文件包含进来即可。

  • 2.3 改进
file(GLOB_RECURSE main_src ${CMAKE_CURRENT_SOURCE_DIR}/exam/*.cpp)
add_executable(main ${main_src} ${sp_inc})

# .h and .cxx files
target_sources(main PRIVATE ${main_src} ${sp_inc} )
posted @ 2020-09-21 23:15  mohist  阅读(4734)  评论(0编辑  收藏  举报