Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Cómo compilar un programa C para Genymotion (Android x86)

Estoy tratando de construir una aplicación HelloWorld simple y ejecutarlo en Genymotion. Mi sistema de construcción es Ubuntu 14.04 64bit. Tengo Android SDK (r22.6.2) y NDK (r9d) instalado.

Primer intento: Construir utilizando la cadena de herramientas preconfigurada NDK ARM

TOOLCHAIN = $NDK/toolchains/arm-linux-androideabi-4.8 $TOOLCHAIN/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc --sysroot=$PLATFORM hello.c -o hello adb push hello /sdcard/ ./hello 

Recibí un error

 /system/bin/sh: ./Hello: not executable: magic 7F45 

Después de hacer algunas investigaciones, rápidamente me doy cuenta de que Genymotion tiene arco x86 en vez de ARM

Segundo intento: Construir utilizando x86 Standalone ToolChain

  1. Hacer x86 auténtico toolchain primero

     cd $NDK/build/tools ./make-standalone-toolchain.sh --arch=x86 --platform=android-19 --install-dir=/tmp/android-toolchain --ndk-dir=../../. --system=linux-x86_64 
  2. Construir Hello usando la cadena de herramientas

     cd tmp/android-toolchain/bin ./i686-linux-android-gcc -o Hello -c hello.c 
  3. Ejecutar Hola en Genymotion

     adb push hello /data/local/tmp adb shell cd /data/local/tmp ./hello /system/bin/sh: ./Hello: not executable: magic 7F45 

Ran uname -a en la máquina genymotion. Nombre del sistema Android file Hello Ran file Hello en el ejecutable Información del archivo

Así que debe ser un partido.

Sigue recibiendo el mismo error. Realmente lo apreciaría si alguien pudiera arrojar algo de luz.

Edición 1: Se ha intentado ejecutar el archivo ejecutable en / data / local / tmp en lugar de / sdcard /. Todavía da el mismo error.

Editar 2: Ran uname en el sistema genymotion y el file en el ejecutable para ver si coinciden.

  • Genymotion no pudo crear una imagen de framebuffer, no obtuvo ninguna solución viable
  • Añadir carpeta / archivos en el emulador de Genymotion
  • GenyMotion No se puede iniciar el dispositivo virtual de Genymotion
  • ¿Por qué genymotion se está ejecutando tan lentamente?
  • Enviar SMS con Genymotion
  • Cómo Flash zip en Genymotion programatically
  • Error en genymotion power_supply
  • Genymotion no inicia dispositivo virtual de Android
  • One Solution collect form web for “Cómo compilar un programa C para Genymotion (Android x86)”

    Si GCC normal no consigue su trabajo hecho, usted tendrá que tomar la ruta más dura.

    Necesitas una cadena de herramientas cruzadas; Sugiero la generación de una cadena de herramientas canadiense usando Crosstool ~ ng; Puede utilizar la herramienta independiente de NDK como punto de partida.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.