[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[linux-users:90102] Re: おまけ(was groff のSegmentation Faultについて)


いしおかです. 

>> On Fri, 14 Dec 2001 20:53:18 +0900, Fumiaki Kobayashi <fumiakik _at_ jaist.ac.jp> said:

ishioka> ええと make のときに cc(gcc) に -g をつけてコンパイルしたり,
ishioka> リンクしたりして下さい.
Fumiaki> 	  ↑
Fumiaki> 	ここでいうリンクとは何ですか?

まぁ あまり深い意味はなくて... コンパイルというのを .o をつくるまで, 
.o と その他諸々をくっつけて 実行形式を作るのを リンクとよんでいるのです.

ご参考...
#include <stdio.h>

int main(int artgc, char **argv)
{
	printf("Hello world\n");
	exit(0);
}

これを hello.c に 保存して...

% cc -g -v -o hello hello.c
    :
 /usr/lib/gcc-lib/i386-pc-linux/2.95.2/cpp -lang-c -v -D__GNUC__=2 -D__GNUC_MINOR__=95 -D__ELF__ -Dunix -D__i386__ -Dlinux -D__ELF__ -D__unix__ -D__i386__ -D__linux__ -D__unix -D__linux -Asystem(posix) -g -Acpu(i386) -Amachine(i386) -Di386 -D__i386 -D__i386__ hello.c /tmp/ccpmjcEr.i

ここで, プリプロセッサが動いて...

 /usr/lib/gcc-lib/i386-pc-linux/2.95.2/cc1 /tmp/ccpmjcEr.i -quiet -dumpbase hello.c -g -version -o /tmp/ccvoBSRv.s

ここで コンパイル.

 /usr/i386-pc-linux/bin/as -V -Qy -o /tmp/ccfZkFJn.o /tmp/ccvoBSRv.s

アセンブラが動いて, .o を作ります. 

 /usr/lib/gcc-lib/i386-pc-linux/2.95.2/collect2 -m elf_i386 -dynamic-linker /lib/ld-linux.so.2 -o hello /usr/lib/crt1.o /usr/lib/crti.o /usr/lib/gcc-lib/i386-pc-linux/2.95.2/crtbegin.o -L/usr/lib/gcc-lib/i386-pc-linux/2.95.2 -L/usr/i386-pc-linux/lib /tmp/ccfZkFJn.o -lgcc -lc -lgcc /usr/lib/gcc-lib/i386-pc-linux/2.95.2/crtend.o /usr/lib/crtn.o

.o と 実行に必要なライブラリやらスタートアップを「リンク」して
実行形式 hello ができあがり.
# 中で ld というリンカを呼んでいます.
-- 
(ishi) 中でもいろいろやってるということ.

この情報があなたの探していたものかどうか選択してください。
yes/まさにこれだ!   no/違うなぁ   part/一部見つかった   try/これで試してみる

あなたが探していた情報はどのようなことか、ご自由に記入下さい。特に「まさにこれだ!」と言う場合は記入をお願いします。
例:「複数のマシンからCATV経由でipmasqueradeを利用してWebを参照したい場合の設定について」
References: