40 votos

Cómo construir i686-linux-android-gfortran para android-ndk8b (arquitectura x86 de Android)?

He intentado con la construcción i686-linux-android-gfortran el uso de build-gcc.sh siguiendo este (es para androdindk-7b) pero me da el error sobre un enlace.h. He añadido el enlace.h a partir de aquí, pero da más errores.

Alguien ha intentado habilitar i686-linux-android-gfortran para x86 de Android?

1voto

CharityAbbott Puntos 930

De https://groups.google.com/forum/#!msg/android-ndk/QR1qiN0jIpE/g0MHkhTd4YMJ como selalerer sugerido. Yo no intente esto, así que voy a postear como un wiki de la comunidad para fines de referencia.

Fortran para Android x86 =================

La guía se basa en esto, muchas gracias a Phil: Compilación de Android NDK con Objective-C-habilitado gcc errores

1) Descargar y descomprimir Android NDK android-ndk-r8c", (el de más edad-r8b NDK no funciona debido a la falta de vínculo.h!): wget http://dl.google.com/android/ndk/android-ndk-r8c-linux-x86.tar.bz2

2) Crear en algún lugar de una carpeta que se llama "herramientas-src' (por ejemplo, dentro de la carpeta android-ndk-r8c), 'cd' a esta nueva carpeta

3) asegúrese de tener git instalado ('yum install git' o lo que sea..) y descargar el conjunto de herramientas de fuentes:

  git clone https://android.googlesource.com/toolchain/build.git
  git clone https://android.googlesource.com/toolchain/gmp.git
  git clone https://android.googlesource.com/toolchain/gdb.git
  git clone https://android.googlesource.com/toolchain/mpc.git
  git clone https://android.googlesource.com/toolchain/mpfr.git
  git clone https://android.googlesource.com/toolchain/expat.git

4) Crear la carpeta 'binutils', 'cd' a este directorio, desempaquetar binutils-2.23 allí: wget ftp.gnu.org/gnu/binutils/binutils-2.23.tar.gz tar-xvzf binutils-2.23.tar.gz Ahora debería tener una carpeta con la cadena de herramientas-src/binutils/binutils-2.23

5) Cambiar a la carpeta de las herramientas-src/crear, editar el fichero Makefile., cambiar la línea: --with-gnu-como-con-gnu-ld --enable-languages=c,c++ a --with-gnu-como-con-gnu-ld --enable-languages=c,c++,fortran

6) En el archivo android-ndk-r8c/build/tools/build-mingw64-toolchain.sh cambiar la línea: var_append GCC_CONFIGURE_OPTIONS "--enable-languages=c,c++" a var_append GCC_CONFIGURE_OPTIONS "--enable-languages=c,c++,fortran"

7) En el archivo android-ndk-r8c/build/tools/build-gcc.sh, cambiar la línea: EXTRA_CONFIG_FLAGS=$EXTRA_CONFIG_FLAGS" --disable-libquadmath --disable-plugin" a EXTRA_CONFIG_FLAGS=$EXTRA_CONFIG_FLAGS" --disable-libquadmath --disable-libquadmath de apoyo --disable-plugin"

8) En el archivo android-ndk-r8c/build/tools/build-host-gcc.sh, cambiar la línea: ARGS=$ARGS" --enable-languages=c,c++" a ARGS=$ARGS" --enable-languages=c,c++,fortran" Y cambiar la línea ARGS=$ARGS" --disable-libquadmath --disable-plugin --disable-libitm --disable-bootstrap" a ARGS=$ARGS" --disable-libquadmath --disable-libquadmath de apoyo --disable-plugin --disable-libitm --disable-bootstrap"

9) la construcción de su nuevo conjunto de herramientas: /your/path/to/android-ndk-r8c/build/tools/build-gcc.sh -j1 --gmp-version=5.0.5 --mpfr-version=2.4.2 --mpc-version=0.8.1 --binutils-version=2.23 --gdb-version=7.3.x //ruta/a/toolchain-src /su/ruta/a/android-ndk-r8c x86-4.7 (no se preocupe acerca de los mensajes como 'expr: advertencia: transportables BRE:')

10) Y bajar hasta las rodillas en frente de la pantalla, rezando al Señor para que de alguna manera estos un sinnúmero de configurar los scripts de hacer las comprobaciones que nadie necesita, utilizando un feo shell idioma que los cocineros de su cerebro con la sangría va de derecha a izquierda, de alguna manera se las arreglan para compilar un millón de millones de demasiado pequeños archivos (de modo que el 10% de su tiempo se gasta en la compilación y el 90% en inicio GCC), y después de una hora de ver el progreso con tail-F /tmp/ndk-Tunombredeusuario/build/toolchain/config.registro de su conjunto de herramientas mágicamente listo. Usted encontrará en el android-ndk-r8c/toolchains carpeta.

11) por último, 'cd' a la carpeta '//ruta/a/android-ndk-r8c/toolchains/x86-4.7/prefabricado/linux-x86/i686-linux-android' y ejecute este comando: ln-s ../libexec libexec Sin este comando, puede suceder que el g++ aumenta el mensaje de error "g++: fatal error: -fusible-enlazador-plugin, pero liblto_plugin.así no encontrado". El uso de strace, me encontré con que g++ busca en la carpeta equivocada, pero el enlace encima que le permite encontrar el archivo liblto_plugin.así que a pesar de todo.

Y aquí están algunas de las lecciones aprendidas en el camino, así que Google encuentra esta página:

*) Para acelerar la compilación, se puede quitar el "- j1'. Pero sólo después de que le dieron a trabajar de una vez, dado que la construcción en paralelo de múltiples núcleos de CPU se informó a causar otros problemas.

*) El mensaje de error "Enlace de las pruebas no están permitidos después de GCC_NO_EXECUTABLES" muestra cuando la vinculación de falla para x86 (obras para el BRAZO). La razón es que GCC no incluye el buen ANDROID_STARTFILE_SPEC y ANDROID_ENDFILE_SPEC de gcc-4.6.1/gcc/config/linux-android.h. GCC 4.6.1 sólo especifica ellos para el BRAZO, pero no para i386, GCC 4.8.0, no obstante. Los GCCs descargado de Google también hacerlo, así que mejor usar Google GCC.

*) El mensaje de error "fatal error: enlace.h: No existe el fichero o directorio" también sucede con Google GCC, y al parecer (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50877) sólo cuando se habilita idiomas adicionales como objc o fortran. El error hilo está aquí: http://gcc.gnu.org/ml/gcc-bugs/2012-08/msg00494.html MIPS tiene enlace.h en android-ndk-r8b/plataformas/android-9/arco-mips/usr/include En android-ndk-r8c, link.h es ahora también presente en android-9/arco-x86/usr/include/link.h, así que este error fue corregido.

*) El mensaje de error "fatal error: quadmath_weak.h: No existe el fichero o directorio": También sucede con la última gcc-4.8, y así podríamos seguir usando Gafas de GCC 4.7. El propio Google utiliza --disable-libquadmath, sino que, además, necesita --disable-libquadmathsupport (ver http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47648). De manera que esto debe ser añadido en android-ndk-r8c/build/tools/build-gcc.sh y android-ndk-r8c/build/tools/build-host-gcc.sh

*) El mensaje de error "error: Pthreads necesario para la construcción de libatomic" Sucede cuando la construcción del BRAZO de la versión de gcc-4.8 descargado desde gnu.org, mejor quedarse con Google GCCs.

*) El GCC que vino con android-ndk-r8c no funciona para mí (mensaje de error acerca de libstdc++.así.6 ser demasiado viejo), mientras que la de android-ndk-r8b trabajado sin problemas. Desde el android-ndk debe apoyar a todos los entornos como es posible, no estoy seguro de por qué el Google decidió dependen de una versión de libstdc++, pero las buenas noticias son que la construcción de su propio conjunto de herramientas se soluciona el problema.

*) Si usted recibe un error al compilar genérico-morestack.c, a continuación, reemplace #ifdef linux // En Linux, la primera de dos señales de tiempo real son utilizados por el NPTL con #if defined(GLIBC) && definidos(linux) // En Linux, la primera de dos señales de tiempo real son utilizados por el NPTL

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X