hello world C プログラムを考えてみましょう:
こんにちは。
#include "stdio.h"
int main()
{
printf("Hello, World!\n");
}
私が電話した場合:
$ gcc -c hello.c -o hello.o
ELF 再配置可能ファイルhello.oが生成されます。
次に電話すると:
$ gcc hello.o -o hello [1]
hello.o を ld にリンクし、ELF 実行可能ファイルhelloを生成します。
[2]
ただし、代わりにld を直接呼び出す場合[1]
:
$ ld hello.o -o hello [2]
次のエラーが表示されます。
/usr/bin/ld.bfd.real: warning: cannot find entry symbol _start
test.c:(.text+0xa): undefined reference to `puts'
gcc は ld に他のオプションを渡す必要があります (たとえば、C ライブラリをリンクするため)。
コマンドライン gcc が command で ld に何を渡しているかを正確に判断する方法はあります[1]
か?