2013-05-27 59 views
1

我試圖用gcov編譯一個android .so文件,並得到以下鏈接錯誤: 在函數全局構造函數中鍵入0_XXX:../../ source/file1.cpp:2661:error:undefined reference to '__gcov_init' in function .LPBX0:file1.cpp(.data.rel + 0x24):error:未定義引用'__gcov_merge_add' 在函數全局構造函數中鍵入0_funcname:../../ source/file2.cpp: 2154:錯誤:未定義參照 '__gcov_init' 在功能.LPBX0:file2.cpp(.data.rel + 0X24):錯誤:未定義參照 '__gcov_merge_add' ' collect2:LD返回1退出狀態 化妝:* [xxx.so]錯誤1Android GCC中的gcov符號在哪裏?

我的android makefile更改:CFLAGS + = - 覆蓋,LOCAL_LDLIBS + = - 覆蓋。 我似乎無法找到缺少符號的位置。我的android工具鏈gcc版本4.6。 任何想法?謝謝。

回答

0

您可以添加以下行Android.mk:

LOCAL_CFLAGS + = -fprofile弧-ftest覆蓋

LOCAL_LDFLAGS + = -lgcov

+0

Ray , 感謝您的回覆。我試過這種方式,但仍遇到「未定義的引用'__gcov_init'和'__gcov_merge_add'問題」。我搜索了整個android源代碼,並在幾個文件夾中找到libgcov.a。我也嘗試了LOCAL_STATIC_LIBRARY + = libgcov,另一個錯誤顯示「out/target/product/XXX/obj/STATIC_LIBRARIES/libgcov_intermediates/libgcov.a(_gcov.o):in gcov_version(,text + 0x98):error:undefined reference to '_impure_ptr'」。你知道嗎? – lilingmzai

0

變化Android.mk這些3行

1)LOCAL_LDLIBS + = -1(absolutepath或relativepath到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弧(這是需要用於鏈接爲UR符號沒有發現問題)

3重要)LOCAL_CFLAGS + = -fprofile弧-ftest-覆蓋

    or 

3)LOCAL_CPPFLAGS + = -fprofile弧-ftest-covera ge

Enjoy ........................................