2017-02-06 10 views
1

最近リンカを読んでいて、このコンパイルコードの理解に問題があります。もし私がgcc -Wl,--hash-style=both example.cを実行するならば、それは単に私がgcc example.cを実行しているのとは違ってどのような違いがありますか。そしてまた、何--hash-style行うことは--hash-styleを何gccリンカオプションの問題を理解する

答えて

1

--hash-style

は( Drepper's articleは、「GNUスタイルのハッシュを参照してくださいあなたは、ランタイム・シンボルの解決のために使用されているハッシュテーブルの形式を変更することを可能にすることを意味します表を参照)。 GNUハッシュテーブル形式はやや速いと言われています。

私はgcc -Wl,--hash-style=both example.cを実行した場合、 私とは対照的に、それは単にそれはあなたのディストリビューションのGCCの構成方法によって異なりgcc example.c

を実行しているどのような違いを生むだろう。 AFAIKは、デフォルトでbothまたはgnuのいずれかのスタイルを使用します。 Bothは、単にリンクされたファイルには、gnusysvハッシュテーブルの両方が含まれることを意味します。これは、GNUハッシュテーブルを理解していない動的リンカを持つシステムでプログラムを実行しようとしない限り問題にはなりません。その場合、プログラムが-Wl,--hash-style=gnuで構築されていると、サポートされていないハッシュテーブル形式について起動時にエラーが発生します。

+0

"GNUハッシュテーブルを理解できない動的リンカーを持つシステム"の例を挙げることができますか? –

+0

@KirilKirov私は具体的なディストリビューション/リビジョンを指摘することはできませんが、そのようなシステムについての報告をしています(http://stackoverflow.com/questions/39132507/compile-libstdc-with-hash-style-sysv)。 – yugr