【发布时间】:2013-01-11 01:41:50
【问题描述】:
我已尝试通过 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
【问题讨论】:
-
您是否传递了
-e标志?或者您是否真的想要链接 C 运行时对象?如果您直接运行ld而不是通过编译器驱动程序,您可能需要自己包含它们。 -
-w -nostdlib -nodefaultlibs -fpic -g -O0 -ffreestanding是我当前的 C 标志。 -
在这种情况下,我的意思是链接器标志。你需要
-e来提供一个入口点,除非你想要默认的 (_start)。 -
--strip-debug --discard-locals --no-keep-memory --entry=0x00000000 -T entry.ld用于链接器。还是没有运气。