こんにちは、単純な 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
: 、、crt*とリンクした場合に表示されるものを見逃しています。がどのように呼び出されるかを見て( で表示されます)、 に対して同じオプションを使用します。gcc -vcrt1.ocrtend.ocrtn.ogcccollect2gcc -vld
mainfunction は実行可能なエントリ ポイントではありません: 標準ライブラリの一部の初期化が前に行われますmain(それ以外の方法で行うのは不可能または非論理的であるため)。_startデフォルトでは実際のエントリ ポイントは、crt1.o常に実行可能ファイルにリンクされています。
メイン関数がないため、試すこともできます
gcc -v hello.c -o hello
正常にコンパイルされるかどうかを確認します。