如何通过Gradle将链接器标志传递给Android Studio中的cmake

时间:2017-09-06 22:09:58

标签: c++ android-studio cmake android-ndk linker

我正在尝试在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

2 个答案:

答案 0 :(得分:2)

您可以为cmake详细输出enable以检查使用的实际链接器标志,但通常所有 cppFlags 都会“按原样”传递给链接阶段。

对我来说,生成*.so文件的命令有-fsanitize=address

externalNativeBuild 传递特定于链接器的参数的标准方法是使用-Wl,cFlagscppFlags,例如

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