7

私は自分の OS に NewLib を移植しようとしています (私はこのチュートリアルに従っています: http://wiki.osdev.org/Porting_Newlib )、いくつか質問があります。

  • LibGloss が完了してコンパイルされたら、作成された libnosys.a を正確にいつ使用する必要がありますか? main.c をコンパイルするのはいつですか?

    mipsel-uknown-elf-gcc main.c -Llibnosys.a`
    
  • 私の crt0.c が完了しました。そして、「最初のオブジェクトとしてリンク」する必要があります。どうやってやるの?このようなものですか?

    mipsel-uknown-elf-ld crt0.o main.o
    

回答ありがとうございます。

4

1 に答える 1

1

最初のオブジェクトとしてのリンクは、表示されているように問題なく機能する可能性がありますが、ドキュメントでは、リンカー スクリプトを使用し、crt0.o を STARTUP() として追加することについて言及しています - 私はリンカー スクリプトにあまり詳しくありませんが、デフォルトを見つけることができますリンカー スクリプトを作成し、場合によっては作成/調整します。

リンクスクリプトの構文: http://wiki.osdev.org/Linker_Scripts

http://sourceware.org/binutils/docs-2.19/ld/Scripts.html#Scripts

The linker always uses a linker script. If you do not supply one yourself, the linker
will use a default script that is compiled into the linker executable. You can use the 
`--verbose' command line option to display the default linker script. Certain command
line options, such as `-r' or `-N', will affect the default linker script.

常にリンクの一部である必要がある他のシステム ライブラリでも、おそらく同じことができます。

コマンド ラインですべてを追加しても問題ありませんが、最終的には少し面倒です。

あなたが尋ねているので、エラーや間違った結果が得られていますか?

于 2010-08-24T14:06:53.150 に答える