我正在尝试在Android Studio中使用C ++支持创建一个简单的测试应用程序。我还需要将一些额外的链接器标志传递给本机构建。在较旧的Android.mk构建格式中,这非常简单并且有文档记录。但是,Android Studio现在默认使用cmake作为本机库,并且我不清楚如何指定要传递给NDK的额外链接器标志。
我要添加的特定标志是 epel/x86_64 Extra Packages for Enterprise Linux 7 - x86_64
rhui-REGION-rhel-server-optional/7Server/x86_64 Red Hat Enterprise Linux Server 7 Optional (RPMs)
以启用ASAN。我已经能够将此标志传递给编译器,方法是将其添加到CMake中的cppFlags属性,如下所示。
是否有类似的方法传递gradle文件中的链接器标志?
sudo yum install -y mod_perl
答案 0 :(得分:2)
您可以为cmake详细输出enable以检查使用的实际链接器标志,但通常所有 cppFlags 都会“按原样”传递给链接阶段。
对我来说,生成*.so
文件的命令有-fsanitize=address
。
为 externalNativeBuild 传递特定于链接器的参数的标准方法是使用-Wl,
和cFlags
或cppFlags
,例如
externalNativeBuild {
cmake {
cFlags "-Wl,--fix-cortex-a8"
}
}
答案 1 :(得分:0)
我认为您不需要为ASAN设置任何ld标志以在app / native代码中工作。 只需运行asan_device_setup(位于sdk / ndk工具链中),它将所需的asan lib推送到设备。请参阅"运行" @ https://github.com/google/sanitizers/wiki/AddressSanitizerOnAndroid