usar studio reloj programming para ndk how como application android makefile android-source

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?



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.