2016-03-11 43 views
7

我试图建立与Android NDK-11库,我得到一个链接错误:NDK 11接头警告作为错误

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

我没有得到这个错误,如果我使用ndk-r10e。

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

警告来自第三方库,所以我不能只重新编译它来修复警告(它们都是'重定位是指丢弃的部分'警告)。我一直看到这些警告,从来没有任何问题。

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

回答

12

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

<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文件所做的错误消失。

还有很多这些文件中定义的其他东西,所以如果你突然得到奇怪的构建错误,请看看那里看看是否有新的功能已启用。