如何在Android NDK GCC上使用AddressSanitizer?

时间:2018-10-23 07:28:27

标签: c++ gcc android-ndk address-sanitizer

我想使用AddressSanitizer来检查使用GCC 4.9编译的Android Native C ++代码中的内存问题。

所以,我设置了

SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}  -g1 -fsanitize=address -fno-omit-frame-pointer")
SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g1 -fsanitize=address -fno-omit-frame-pointer")
SET (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fsanitize=address -static-libasan")

在我的CMakeLists.txt文件中。

但我遇到了错误:

  

ld.exe:错误:找不到-lasan“,我在NDK目录中找到,我没有   找到libasan.so

NDK GCC与NDK Clang是否不同?在NDK中,只是氏族支持AddressSanitizer?

1 个答案:

答案 0 :(得分:2)

您不能在NDK中将ASAN与GCC一起使用。这些库从未发行。 Clang支持ASAN,并且当前NDK中根本不支持GCC。

  

NDK GCC与NDK Clang是否不同?

与非NDK GCC与非NDK Clang相同,是的。他们是不同的编译器。