最初のオブジェクトとしてのリンクは、表示されているように問題なく機能する可能性がありますが、ドキュメントでは、リンカー スクリプトを使用し、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.
常にリンクの一部である必要がある他のシステム ライブラリでも、おそらく同じことができます。
コマンド ラインですべてを追加しても問題ありませんが、最終的には少し面倒です。
あなたが尋ねているので、エラーや間違った結果が得られていますか?