は、次のCプログラムを取ります。
私は-nostdlibでリンクを無効にできると仮定しました。プログラムをリンクするのにstdlibが必要なのはなぜですか?それは、C標準ライブラリから何かを使用していない</p> <pre><code>int main(){} </code></pre> <p>:
しかし、これは、次のエラーが発生:
$ gcc -nostdlib -o main main.c
/usr/bin/ld: warning: cannot find entry symbol _start; defaulting to 0000000000400150
誰かが_start
シンボルであり、誰がそれを提供する責任が何であるかを明確にすることはできますか?
-nostdlib
を使用するにはどうすればよいですか?ドキュメント毎の
、私も試してみました:
$ gcc -nostdlib -o main main.c -lgcc
同じ動作を打ち鳴らすと見られています。
最初に気づくべきことは、それが*リンカー*エラーだということです。つまり、コンパイルに失敗したわけではありません。 – Dmitri
@ドミトリーはい、タイトルを修正します。 –
'-lgcc'は最後に行かなければなりません。 Gccは、ライブラリが検出した時点でライブラリを処理するため、前述のオブジェクトからシンボルを解決するためにのみ使用されます。 – rici