【发布时间】:2020-07-15 08:41:35
【问题描述】:
我的 HAL 是一个共享库。我想单独为共享库进行地址清理。我在将 HAL 构建为共享库的文件 (Android.mk) 中添加了以下行。
- LOCAL_SANITIZE:=地址
- LOCAL_MODULE_RELATIVE_PATH := asan
然后我收到类似“(SHARED_LIBRARIES android-x86_64) missing libasan.vendor (STATIC_LIBRARIES android-x86_64)”的错误。所以我在所有依赖的静态库中添加了 sanitize 标志。其中一个库有 Android.bp 文件而不是 Android.mk,所以我添加了 sanitize: {address: true},然后它通过错误(模块“libaudiohw_legacy”变体“android_x86_64_silvermont_static_core”:取决于禁用模块“libasan” )
根据文档 (https://source.android.com/devices/tech/debug/asan) 我读到,由于 ASan 的工作方式,使用 ASan 构建的库只能由使用 ASan 构建的可执行文件使用。因此,我通过添加以下两行将可执行文件设置为 asan。删除了所有其他更改。 LOCAL_SANITIZE:=地址 LOCAL_MODULE_RELATIVE_PATH := asan 然后可执行文件下的可执行文件和共享库也放入/system/lib/asan而不是/system/lib。但是在启动时,启动库将搜索 /system/lib 中的二进制文件,它不会找到并且也不会启动。
安卓版本----奥利奥8.1.0_r33
如果有人有适当的步骤/文档来清理共享库,请帮助我。
【问题讨论】: