1

こんにちは、単純な hello world C プログラムを作成し、次のようにコンパイルしています。

gcc -c hello.c
ld hello.o -lc -o out

ld から警告が表示されます:ld : _start not found defaulting to ....

実行しましたが、出力にルーチンがobjdump -D hello.o見つかりません。 ここで何が欠けていますか?_start

4

3 に答える 3

4

: 、、crt*とリンクした場合に表示されるものを見逃しています。がどのように呼び出されるかを見て( で表示されます)、 に対して同じオプションを使用します。gcc -vcrt1.ocrtend.ocrtn.ogcccollect2gcc -vld

mainfunction は実行可能なエントリ ポイントではありません: 標準ライブラリの一部の初期化が前に行われますmain(それ以外の方法で行うのは不可能または非論理的であるため)。_startデフォルトでは実際のエントリ ポイントは、crt1.o常に実行可能ファイルにリンクされています。

于 2013-01-28T09:31:16.707 に答える
0

メイン関数がないため、試すこともできます

gcc -v hello.c -o hello

正常にコンパイルされるかどうかを確認します。

于 2013-01-28T09:31:05.430 に答える