当我编译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
并且make过程最终失败:
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
我尝试使用和不使用clang以及使用不同版本的clang来构建源代码。但是在新的分支上,clang是一种要求,如果没有它,make就无法启动。
可能出现什么问题?
答案 0 :(得分:24)
应该应用此补丁来使事情正常工作https://android-review.googlesource.com/#/c/223100/
在Android源代码目录中打开build/core/clang/HOST_x86_common.mk
文件,并使用一些编辑器添加这些行,如link
对于Android Lollipop或任何早期版本,请确保在应用此修补程序时保留-no-integrated-as
。确保线条连续是正确的(\
在除最后一行之外的每一行的末尾。)
但是,在Marshmallow中删除了-no-integrated-as
。
答案 1 :(得分:24)
对我有用:
在文件/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
答案 2 :(得分:4)
问题来自于binutils的不兼容变化:添加了一些部分。一些构建平台有新的binutils和android构建树有旧的。该错误来自clang调用变量定义。这些并不告诉clang使用提供的构建链。然后clang使用本机构建平台binutils(这里是/ usr / bin /而不是提供的预构建)。然后修复意味着应用mysticTot指向的补丁,然后删除工具链产生的所有二进制文件(根据错误出现的位置,这可能会改变,但删除所有STATIC_LIBRARIES / SHARED_LIBRARIES / EXECUTABLES等dirs应该这样做)。同时删除ccache缓存(因为它存储.o)然后重建。 由Ov3r1oad提供的修复包括用原生ld替换预构建的工具链ld不是解决方案,只是一种解决方法并且可能是危险的(混合部分编号不好)。 希望它会有所帮助。
答案 3 :(得分:3)
作为一种强硬的解决方法,我只是用/usr/bin/ld.gold上的软链接替换了预构建的链接器。 它在这里描述:https://bbs.archlinux.org/viewtopic.php?id=209698。
答案 4 :(得分:2)
您是在Arch Linux上构建的吗?我今天遇到同样的问题。我以前的版本是在3天前完成的,一切都很好。今天都失败了。
我看到管理员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 ...