2017-04-06 18 views
0

は私がld -sはどういう意味ですか?

$ man ld 

彼らは-sオプションのために提供してきました定義を試みたが、少し理解の私のレベルを超えていました。シンボルの剥ぎ取りはどういう意味ですか?役に立つと思われるリンクを指定してください。ありがとうございました。

+1

https://en.wikipedia.org/wiki/Strip_%28Unix%29 – Tommylee2k

+0

リンクありがとうございます! –

答えて

2

ldは、多数のオブジェクトファイルをバイナリにリンクします。このバイナリには、通常、プログラムで使用されるすべてのシンボルの名前、型、サイズ、およびアドレスを含むシンボルテーブルが含まれています。

このテーブルを省略することが望ましい場合があります。たとえば、バイナリを小さくしたい場合(大規模なプログラムではシンボルテーブルに数MBのシンボルを含めることができます)、漏れたくないときプログラムの実装方法に関する情報 - シンボルテーブルにはすべての関数名と(静的な)変数名が含まれていることを覚えておいてください。

伝統的に、stripユーティリティがこの目的のために使用されました。 stripは、バイナリを取り、そのシンボルテーブルと、デバッグ情報などのプログラムの実行に厳密に必要とされない他のメタデータを削除します。しかし、当時のリンクとディスクIOは遅く、人々は最初にこの情報を出さないようにリンカーに-s(ストリップ用)オプションを追加しました。これにより、リンクステージが少し速くなりました。

+0

ありがとうございます! –

関連する問題