我想使用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?
答案 0 :(得分:2)
您不能在NDK中将ASAN与GCC一起使用。这些库从未发行。 Clang支持ASAN,并且当前NDK中根本不支持GCC。
NDK GCC与NDK Clang是否不同?
与非NDK GCC与非NDK Clang相同,是的。他们是不同的编译器。