编译ARM时出现异常的LD警告

时间:2013-01-27 17:06:28

标签: gcc arm macports ld

我已尝试通过MacPorts安装“arm-none-eabi-gcc”和“arm-elf-gcc”,但每次编译时都会收到此警告。

ld: warning: cannot find entry symbol _start; defaulting to 0000000000008000

我正在使用“-T”标志并指定我自己的链接器文件,如下所示。

SECTIONS {

    . = 0x00000000;

    .text : { * (vectors);  * (.text); }

    .rodata : { * (.rodata); }

    text_end = .;

    . = 0xA4000000;

    .data : AT (text_end) { * (.data); }

    .bss : { * (.bss); }

}
NM将此转储。

00000000 t reset
00000004 t undefined
00000008 t swi
0000000c t prefetch_abort
00000010 t data_abort
00000014 t reserved
00000018 t interrupt_request
0000001c t fiq
00000020 t irq
00000024 T init
00000038 T main
0000004c A text_end
00008024 t entry
0000804c T __data_start
00010028 A __bss_end__
00010028 A __bss_start
00010028 A __bss_start__
00010028 A __end__
00010028 A _bss_end__
00010028 A _edata
00010028 A _end
00080000 N _stack

1 个答案:

答案 0 :(得分:2)

链接器正在向您发出警告,因为它无法在已编译的代码中找到_start符号。并且您当前的链接器配置期望在代码中的某处定义此类符号。

因此,您可以通过查阅编译器/链接器用户手册并了解-e链接器标志的用法或者真正定义名为_start的符号来手动定义入口点(即重置)的解决方案。你的一些代码。