2

我尝试过通过 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
4

1 回答 1

2

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

因此,您要么拥有通过查阅编译器/链接器用户手册并了解-e链接器标志的用法来手动定义入口点(即重置)的解决方案,要么真正定义_start在某些代码中命名的符号。

于 2013-01-29T12:34:46.787 回答