studio - ndk para android
Construyendo Android desde fuentes: reloc 43 no compatible (5)
¿Estás construyendo en Arch Linux? Tengo el mismo problema desde hoy. Mis versiones anteriores fueron hace 3 días y estaban bien. Hoy todos fallan.
Veo que el administrador actualizó algunos paquetes hace 2 días, especialmente estos
[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 podría ser el culpable? ( https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=808206 )
también vea https://groups.google.com/d/msg/android-x86/U1XpL0tUpqw/y4W3wRCdJgAJ ...
Cuando estoy compilando Android 5.1.1, recibo docenas de errores como este:
...
...
...
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
y el proceso de fabricación finalmente falla:
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
He intentado construir fuentes con y sin clang, y con diferentes versiones de clang. Pero en las ramas más nuevas, el ruido metálico es un requisito y la marca no comienza sin él.
¿Qué podría estar mal?
Como solución temporal, simplemente reemplacé el enlazador precompilado por un enlace flexible en /usr/bin/ld.gold. Se describe aquí: https://bbs.archlinux.org/viewtopic.php?id=209698 .
Los problemas provienen de un cambio incompatible en binutils: se agregaron algunas secciones. Algunas plataformas de compilación tienen el nuevo binutils y el árbol de compilación de Android tiene uno antiguo. El error proviene de la definición de las variables de invocación clang. Estos no le dicen a Clang que use la cadena de construcción provista. Luego clang usa la plataforma de compilación nativa binutils (aquí / usr / bin / as en lugar de los prebuilts proporcionados como). Luego, la solución implica aplicar el parche señalado por mysticTot y luego eliminar todos los archivos binarios producidos por la cadena de herramientas (de acuerdo con el lugar donde aparece el error, esto podría cambiar, pero eliminar todos los directorios STATIC_LIBRARIES / SHARED_LIBRARIES / EJECUTABLES, etc.) debería hacerlo. También elimine el caché de ccache (ya que almacena .o) y luego reconstrúyalo. La solución provista por Ov3r1oad que consiste en reemplazar la cadena de herramientas precompilada ld por el ld nativo no es una solución, solo una solución alternativa y podría ser peligrosa (el número de la sección de mezcla no es bueno). Espero que te ayude.
Me funciona a mí:
en el archivo /art/build/Android.common_build.mk, averigüe:
# Host.
ART_HOST_CLANG := false
ifneq ($(WITHOUT_HOST_CLANG),true)
# By default, host builds use clang for better warnings.
ART_HOST_CLANG := true
endif
cambiar a :
# Host.
ART_HOST_CLANG := false
ifeq ($(WITHOUT_HOST_CLANG),false)
# By default, host builds use clang for better warnings.
ART_HOST_CLANG := true
endif
Si aún no funciona, intente esto en la ruta de su raíz de Android: cp /usr/bin/ld.gold prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.6/x86_64-linux/bin/ld
Uno debería aplicar este parche para que las cosas funcionen https://android-review.googlesource.com/#/c/223100/
Abra el archivo build/core/clang/HOST_x86_common.mk
en su directorio de código fuente de Android con algún editor agregue estas líneas, como se menciona en este https://android-review.googlesource.com/#/c/223100/
Para Android Lollipop o cualquier versión anterior, asegúrese de mantener -no-integrated-as
mientras se aplica este parche. Asegúrese de que las continuaciones de línea sean correctas ( /
al final de cada línea, excepto la última línea).
Pero, -no-integrated-as
se elimina en Marshmallow.