4

最近、gcovを使用してコードカバレッジ情報を収集しています。gcovは実行可能アプリケーションでうまく機能します:)が、.soファイルを読み込もうとすると、次のエラーが発生しました:不明なシンボル__gcov_merge_add。

次に、Googleで検索すると、誰かがリンクフラグ(LDFLAGS)に-lgcovを追加すると言いましたが、このオプションを追加しましたが、機能しませんでした。リンクフラグの--coverageオプションも試してみましたが、このエラーを取り除くことができません。

誰かがこの問題を手伝ってもらえますか?

ありがとうございました。

4

1 に答える 1

5

私もその問題に遭遇しましたが、それ以来解決しました。CPPFLAGS と LDFLAGS の両方で --coverage オプションを使用するだけです。コンパイルの問題を処理する必要があると思います。

ただし、共有オブジェクトはまだ .gcda ファイルを生成していないようで、その問題を解決する方法がわかりません。あなたが言ったように、実行可能ファイルでは問題なく動作しますが、共有オブジェクトにはいくつか問題があるようです。

編集: どうやら、gcov は現在共有オブジェクトをサポートしています。昨日かなりの量の調査を行ったところ、相反する答えが見つかったので、gcc-help リストにメールしました。ここのスレッドを参照してください: http://gcc.gnu.org/ml/gcc-help/2010-09/msg00130.html。私はまだ答えに基づいて問題を解決しようとはしていませんが、解決したら投稿します。

編集 2: 共有オブジェクトは gcov (または gcc の --cover オプションではなく) で動作します。ここに詳細が記載された別の投稿があります: gcov: 共有ライブラリから .gcda 出力を生成しますか? . また、上記の同じスレッドを参照しています。

于 2010-09-14T20:29:13.833 に答える