1

gcov を使用して android .so ファイルをコンパイルしようとすると、次のリンク エラーが発生します。関数 .LPBX0:file1.cpp(.data.rel+0x24): エラー: 0_funcname:../../source/file2.cpp:2154 にキー設定された関数グローバル コンストラクターの '__gcov_merge_add' への未定義の参照: エラー: 未定義関数 .LPBX0:file2.cpp(.data.rel+0x24) の '__gcov_init' への参照: エラー: '__gcov_merge_add' への未定義の参照 ' collect2: ld が 1 の終了ステータスを返しました make: * [xxx.so] エラー 1

私のアンドロイドメイクファイルの変更: CFLAGS += --coverage, LOCAL_LDLIBS += --coverage. 不足しているシンボルの場所が見つからないようです。私のアンドロイド ツールチェーン gcc バージョン 4.6. 何か案は?ありがとう。

4

2 に答える 2

0

これらの 3 行で Android.mk を変更します

1) LOCAL_LDLIBS += -l (libgcov への絶対パスまたは相対パス)

例: LOCAL_LDLIBS += -l/home/souradeep.c/JFLTEATT/android/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/lib/gcc/arm-eabi/4.6.x-google/libgcov .a

2) LOCAL_LDFLAGS += -fprofile-arcs (これは、シンボルが見つからないという問題で重要なリンクに必要です)

3) LOCAL_CFLAGS += -fprofile-arcs -ftest-coverage

                   or

3) LOCAL_CPPFLAGS += -fprofile-arcs -ftest-coverage

楽しみ.......................................

于 2013-07-13T11:08:29.247 に答える