1

リンカとしてldを使用してCで小さなhello-worldプログラムを生成する際に問題が発生します。

これまでの私の手順は次のとおりです。

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

./hello
-bash: ./hello: no such file or directory

hello.cのソースはここにあります:

#include <stdio.h>
int main(){
    puts("Hello, world!");
    return 0;
}

ここで重要な部分を見逃しているようです。エラーgccldエラーも発生せず、両方とも戻り値0で終了しました。

「使うだけ」と言わないでくださいgcc -o hello hello.c!私は10枚のボードのように閲覧しましたが、人々はいつもその答えを出しました。私はそれを古い方法で行う方法を知りたいです。

4

1 に答える 1

3

GCCが実際に何をしているのかを理解したい場合は、-vフラグを付けて実行してください。(たとえば、gcc -v -o hello hello.c。)

GCCが通常リンカーに含めるように指示するコードの一部が欠落しています。の出力を見ると、などが表示されgcc -vますcrt1.o -lgcc -lgcc_s

、などのオプション、およびバックグラウンドでリンクされているこれらの余分なコードのコンテキストについては、 GCCのドキュメントも参照してください。-nostartfiles-nodefaultlibs-nostdlib

于 2012-11-01T00:56:14.953 に答える