arm64架构Undefined symbols报错:缺失_main符号无法编译问题求助
报错复现
Undefined symbols for architecture arm64: "_main", referenced from: implicit entry/start for main executable ld: symbol(s) not found for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation)
解决方案
该错误为clang链接器生成arm64架构可执行文件时,未找到强制要求的程序入口main函数导致,可按以下步骤排查修复:
- 检查入口源文件的
main函数拼写、大小写是否正确,C、C++、Objective-C等编译型语言要求可执行程序必须有且仅有一个main函数作为执行入口,拼写错误、大小写不符都会导致链接器无法识别入口 - 核对编译命令是否包含了带有
main函数的源文件,例如原本完整命令为clang main.c utils.c -o demo,若遗漏main.c仅执行clang utils.c -o demo就会触发该报错 - 若使用Xcode开发,检查带有
main函数的源文件是否被加入当前编译目标的Compile Sources列表,同时确认编译目标的架构配置包含arm64,未被误移除 - 检查编译参数是否存在错误配置:若添加了
-e参数指定自定义入口却没有对应实现,或者编译目标类型误设为不需要main函数的动态库/静态库,也会触发该问题 - 此前运行正常突然报错可优先排查近期改动:是否修改了编译配置、移动/重命名了入口源文件、调整了
main函数的声明或定义
内容的提问来源于stack exchange,提问作者TECH_WIZ
相关产品推荐
相关产品推荐

