【发布时间】:2023-03-27 12:38:01
【问题描述】:
我想使用 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 中,是否只是 Clan 支持 AddressSanitizer?
【问题讨论】:
-
“只是 Clang 支持 AddressSanitizer?” 是:“作为构建 ASan 检测二进制文件的第一步,请确保您的代码使用 Clang 构建”。无论如何,GCC 在 NDK 中已经被弃用了一段时间,并且在 NDK r18 中被完全删除。
标签: c++ gcc android-ndk address-sanitizer