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 に答える