【问题标题】:Cannot find entry symbol _start找不到入口符号 _start
【发布时间】:2012-06-15 05:51:50
【问题描述】:

我在 gcc 上编译的 c 代码给出了错误Cannot find entry symbol _start defaulting to 00000。谁能告诉我为什么以及如何纠正它?

命令行是arm-none-eabi-gcc -O3 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -ftree-vectorize -mfloat-abi=softfp file path,目标平台是a-8 sitara cortex处理器。

【问题讨论】:

  • 您需要发布更多信息。尤其是您的命令行和目标平台。
  • 命令行是 arm-none-eabi-gcc -O3 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -ftree-vectorize -mfloat-abi=softfp 文件路径和目标平台是a-8 sitara 皮质处理器
  • _start 是标准库的一部分。它是调用main 的函数。它应该在crt0.o 中定义,它应该自动与您的程序链接。您的 gcc 可能会以不同的方式工作,并且需要一些额外的操作。也许文档中有一些工作示例?
  • 添加“-###”作为您的第一个参数并发布输出,即“arm-none-eabi-gcc -### -O3 -march=armv7 ...”跨度>
  • 这可能是因为您的 c 程序中没有 main() 函数。请发布您的 c 程序。

标签: gcc


【解决方案1】:

编译器抛出上述错误的唯一原因是操作系统为运行您的代码而生成的启动代码(_start 函数)找不到默认或注册函数 main。因此,您可以使用 _start 函数代替 main 函数,但编译命令应该是 gcc -nostartfiles filename.c 但使用 _start 会有很多异常,因此最好使用 main 代替。

【讨论】:

    【解决方案2】:

    -none- 部分表示您的工具链不是为特定操作系统构建的,因此您必须定义一个 _start 入口点。对于为特定操作系统构建的非裸机工具链,_start 由标准库提供,以便在一切设置好时调用 main。

    【讨论】:

      猜你喜欢
      • 2018-12-23
      • 2015-02-13
      • 1970-01-01
      • 1970-01-01
      • 2016-04-17
      • 2019-01-25
      • 2012-10-25
      • 2019-04-06
      • 1970-01-01
      相关资源
      最近更新 更多