NDK 11链接器将警告视为错误

时间:2016-03-11 21:38:13

标签: android android-ndk

我试图使用android ndk-11构建一个库,并且我收到链接器错误:

arm-linux-androideabi/bin/ld: error: treating warnings as errors

如果我使用ndk-r10e,我不会收到此错误。

使用V = 1运行ndk-build,我看到-Wl,--fatal-warnings正在传递给链接器。我已经尝试将LOCAL_LDFLAGS:=-Wl,--no-fatal-warnings添加到我的Android.mk文件中,我可以在链接器输出中看到它实际上已传递给链接器,但它在之前传递 -Wl,--fatal-warnings,因此被忽略了。

警告来自第三方库,因此我无法重新编译它来修复警告(它们都是“重新定位”是指丢弃的部分'警告)。我一直看到这些警告,从来没有遇到任何问题。

有谁知道如何告诉ndk-11链接器将警告视为错误?

1 个答案:

答案 0 :(得分:15)

我在写这篇文章时想到了这一点,所以我想我会分享解决方案。

<NDK_ROOT>/build/core有一堆运行ndk-build时使用的.mk文件。在build-binary.mk内,对您可以定义的变量进行了一些新的(未记录的)检查。对于这个特定的一个,有以下块:

# We enable fatal linker warnings by default.
# If LOCAL_DISABLE_FATAL_LINKER_WARNINGS is true, we don't enable this check.
ifneq ($(LOCAL_DISABLE_FATAL_LINKER_WARNINGS),true)
  LOCAL_LDFLAGS += -Wl,--fatal-warnings
endif

LOCAL_DISABLE_FATAL_LINKER_WARNINGS=true添加到我的.mk文件中会导致错误消失。

这些文件中定义了很多其他内容,因此如果您突然发现奇怪的构建错误,请查看是否已启用新内容。< / p>