2

私は最近、Linux上でgcc4.5.0とbinutils2.20をゴールドで使用した新しいツールチェーンを公開しました。今、私はこの新しいものPGOに興味がありました。実行可能ファイルでどのように機能するかは明らかですが、共有ライブラリで答えを見つけることができませんでした。グーグル経由でgccメーリングリストに2つの未回答の投稿を見つけました。それだけです。

だから私が試したことは次のとおりです。-fprofile-generateにフラグを立てない限り、すべてが正常であり、私の.soはメインプログラムによってdlopen()され、問題なく動作します。コンパイルして-fprofile-generateでリンクすると、ライブラリが読み込まれ、すべてが機能しますが、メインプログラムを終了すると、coredumpを含むsigsegvが取得されます。

コアファイルをgdbにフィードし、これを取得しました。

#0 0x00000000 in ?? ()
No symbol table info available.
#1 0x1f32bc2f in ?? ()
No symbol table info available.
Backtrace stopped: previous frame inner to this frame (corrupt stack?)

そしてもちろん、.cddaファイルは保存されません。

何か案は?

フィリップ

4

1 に答える 1

1

PGO で共有ライブラリを構築します。

私がしていることは、すべての .o ファイルを含む「プロファイル」ディレクトリを profile-generate で作成することです。次に、それらを共有ライブラリにリンクします。次に、同様に profile-generate でビルドされた実行可能ファイルにリンクされたライブラリを使用してプロファイリングを実行します。

その後、プロファイル使用で構築されたすべての .o ファイルを含む「リリース」ディレクトリを構築し、それらを共有ライブラリにリンクすると、PGO で構築された共有ライブラリができました。

于 2010-12-08T20:36:16.353 に答える