问题 找不到条目符号_start


我在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处理器。


4467
2018-06-12 10:47


起源

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


答案:


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


6
2018-05-13 12:59





-none-部分意味着您的工具链不是为特定的操作系统构建的,因此您必须定义_start入口点。对于为特定操作系统构建的非裸机工具链,_start由标准库提供,在设置完所有内容后将按顺序调用main。


4
2017-07-21 19:01