当前位置:   article > 正文

Undefined symbols for architecture arm64: “_main“, referenced from: implicit entry/start from

undefined symbols for architecture arm64:

一、问题

  1. Undefined symbols for architecture arm64:
  2.   "_main", referenced from:
  3.      implicit entry/start for main executable
  4. ld: symbol(s) not found for architecture arm64
  5. clang: error: linker command failed with exit
  6. code 1 (use -v to see invocation)

 二、解决

        这个错误信息在Visual Studio Code(VSCode)中出现时,通常意味着链接器(Linker)在编译和链接你的C或C++程序时,无法找到'_main'函数的定义。'_main'是C和C++程序执行的入口点,在可执行文件中必须存在。

        对于“Undefined symbols for architecture arm64”这一部分,它特指编译的目标架构是arm64(苹果M1芯片或其他64位ARM架构),而在该架构下,某些必要的符号(这里是_main函数)没有被找到。

方法一

1. 检查源代码

  1. 确保主程序文件(通常是含有'int main()'函数的文件)已经被正确包含在构建过程中。如果
  2. 'main'函数放在了一个单独的'.cpp'文件中,确保该文件已被添加到项目或任务配置中,并且会被
  3. 编译器编译。

2. 构建设置

  1.    在VSCode中使用CMakeLists.txt或者其他构建工具(如g++命令行参数或者 tasks.json
  2. 文件等)时,请确保编译目标架构设置为`arm64`并且所有的源文件都被正确引用和链接。

3. C/C++扩展配置

  1.    如果使用了VSCode的C/C++扩展进行编译,确保的'c_cpp_properties.json''launch.json'
  2. 以及'tasks.json'等配置文件都正确地包含了所有需要编译和链接的源文件路径。

4. Xcode CLT(Command Line Tools)

  1.    对于Mac M1用户,确保安装了Xcode Command Line Tools,因为它们提供了针对arm64架构
  2. 的编译工具链。

5. 静态库或依赖项

  1.    如果你的程序依赖于某个静态库或框架,并且这个库本身不支持arm64架构,也会导致此问题。
  2. 确保所有依赖的库都已经适配了arm64平台。

6. 清理并重新构建

   清理之前的编译输出,然后完全重新构建项目,有时候缓存的问题可能导致链接错误。

7. 查看编译详细日志

  1.    如错误提示中建议的,通过添加 '-v' 参数给clang或ld以查看详细的编译和链接过程,这有
  2. 助于找出哪个环节出现了问题。

方法二

VsCode配置的问题

1、打开设置

2、搜索框中输入"Code-runner" ---->勾选"Code-runner: Save File Before Run"

3、重新编译程序即可 

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号