経験からとstrip
のmanページを見てから、それはstrip
のように見えるがないが必要とされていない任意およびすべてのセクションと文字列を取り除くことになって。ただ記号。あなたが注意しても--strip-all
せずに、このよう.symtab
と.strtab
として、ロードするための不要なセクションを削除し、次のことができ、経験、strip
から、言われていること
GNU strip discards all symbols from object files objfile.
、削除:manページquothがあなたが望むセクションは--remove-section
です。
.notes
部の一例として、私は私のUbuntu 11.10 64ビット・ボックスから/bin/ls
を取った:
$ readelf -Wn /bin/ls
Notes at offset 0x00000254 with length 0x00000020:
Owner Data size Description
GNU 0x00000010 NT_GNU_ABI_TAG (ABI version tag)
OS: Linux, ABI: 2.6.15
Notes at offset 0x00000274 with length 0x00000024:
Owner Data size Description
GNU 0x00000014 NT_GNU_BUILD_ID (unique build ID bitstring)
Build ID: 3e6f3159144281f709c3c5ffd41e376f53b47952
.note.ABI-tag
部と.note.gnu.build-id
セクションを包含する。プログラムをロードする必要はないが、標準ではないデータが含まれているように見えます。プログラムの適切な実行にはstrip
が必要でないことは知られていません。ELFには削除しても安全でない追加の「未知の」セクション。だからむしろ仮想ホワイトリスト(悲惨に失敗する)を使用して、それはそれが取り除くことができることを知っているセクションのブラックリストを使用し、そうします。
短いバージョン:これらのセクションは標準ではないようで、さまざまな用途に使用できるため、strip
は削除するのが安全かどうかわかりません。しかし、私が上記で取った情報に基づいて、あなた自身のプログラムであれば、それを削除することはほぼ確実です。
ありがとうございます。私には理にかなっています。 – srking
.note.gnu.build-idのいくつかの言及は、https://fedoraproject.org/wiki/Releases/FeatureBuildIdです。人々は何をしていますか:https://lkml.org/lkml/2011/12/ 15/162 – pfalcon
strip --remove-section = .note.gnu.build-id –