从源代码构buildAndroid:不支持的reloc 43

当我编译Android 5.1.1时,我得到了许多像这样的错误:

... ... ... libnativehelper/JniInvocation.cpp:165: error: unsupported reloc 43 libnativehelper/JniInvocation.cpp:165: error: unsupported reloc 43 libnativehelper/JniInvocation.cpp:165: error: unsupported reloc 43 libnativehelper/JniInvocation.cpp:165: error: unsupported reloc 43 

并且制作过程最终失败:

 clang: error: linker command failed with exit code 1 (use -v to see invocation) build/core/host_shared_library_internal.mk:44: recipe for target 'out/host/linux-x86/obj32/lib/libnativehelper.so' failed make: *** [out/host/linux-x86/obj32/lib/libnativehelper.so] Error 1 

我已经尝试了使用和不使用铿锵声以及用不同版本的铿锵声创build声源。 但是在新的分支上,叮当是一个要求,没有它就不能开始。

什么可能是错的?

Solutions Collecting From Web of "从源代码构buildAndroid:不支持的reloc 43"

一个应该应用这个补丁得到的东西工作https://android-review.googlesource.com/#/c/223100/

打开build/core/clang/HOST_x86_common.mk文件,在你的android源代码目录下用一些编辑器添加这些行,就像这个链接中提到的那样

对于Android棒棒糖或任何早期版本,请确保在应用此修补程序时保持“ -no-integrated-as 。 确保线的延续是正确的( \除了最后一行之外的每行的结尾处)。

但是, -no-integrated-as在棉花糖中被删除一样。

它适用于我:
在/art/build/Android.common_build.mk文件中,找出:

 # Host. ART_HOST_CLANG := false ifneq ($(WITHOUT_HOST_CLANG),true) # By default, host builds use clang for better warnings. ART_HOST_CLANG := true endif 

改成 :

 # Host. ART_HOST_CLANG := false ifeq ($(WITHOUT_HOST_CLANG),false) # By default, host builds use clang for better warnings. ART_HOST_CLANG := true endif 

如果还是不行的话,可以在你的android根目录下试试这个: cp /usr/bin/ld.gold prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.6/x86_64-linux/bin/ld

问题来自binutils的不兼容变化:添加了一些部分。 一些搭build平台有新的binutils和android的搭build树有旧的。 该错误来自clang调用variables定义。 这些不会告诉clang使用提供的构build链。 然后,clang使用本地构build平台binutils(这里是/ usr / bin /,而不是提供的预构build)。 然后修复意味着应用mysticTot指向的补丁,然后删除由工具链生成的所有二进制文件(根据错误出现的位置,这可能会改变,但删除树中的所有STATIC_LIBRARIES / SHARED_LIBRARIES / EXECUTABLES等目录应该这样做)。 同时删除ccachecaching(因为它存储.o)然后重build。 由Ov3r1oad提供的修复包括用本地ldreplace预编译的工具链ld不是一个解决scheme,只是一个解决方法,可能是危险的(混合节号不好)。 希望它能帮上忙。

作为一个硬解决方法,我刚刚用/usr/bin/ld.gold上的软链接replace了预build的链接器。 它在这里描述: https : //bbs.archlinux.org/viewtopic.php?id = 209698 。

你在Arch Linux上build立吗? 自从今天我有同样的问题。 我以前的版本是3天前,都很好。 今天都失败了。

我看到pipe理员2天前升级了一些软件包,特别是这些

 [2016-03-16 15:29] [ALPM] upgraded glibc (2.22-3 -> 2.23-1) [2016-03-16 15:29] [ALPM] upgraded lib32-glibc (2.22-3.1 -> 2.23-1) [2016-03-16 15:29] [ALPM] upgraded lib32-gcc-libs (5.3.0-3 -> 5.3.0-5) [2016-03-16 15:29] [ALPM] upgraded gcc-libs-multilib (5.3.0-3 -> 5.3.0-5) [2016-03-16 15:29] [ALPM] upgraded libcap (2.24-2 -> 2.25-1) [2016-03-16 15:29] [ALPM] upgraded binutils (2.25.1-3 -> 2.26-3) [2016-03-16 15:29] [ALPM] upgraded gcc-multilib (5.3.0-3 -> 5.3.0-5) [2016-03-16 15:29] [ALPM] upgraded libcups (2.1.2-3 -> 2.1.3-1) 

binutils可能是罪魁祸首? ( https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=808206

另请参阅https://groups.google.com/d/msg/android-x86/U1XpL0tUpqw/y4W3wRCdJgAJ