"no ejecutable: magic 7F45" al ejecutar calcetines rojos en el emulador de Android

Estoy tratando de hacer que ProxyDroid o redsocks se ejecuten en el emulador de Android Genymotion (x86). ADB shell en el dispositivo, ejecute redsocks y obtengo not executable: magic 7F45.

Sé que significa que la versión no cumple con la CPU. Sin embargo, en Genymotion, puedo ejecutar un montón de paquetes ARM sin problemas (después de haber instalado los archivos de traducción ARM de Genymotion).

Compilé fuentes de redsocks en mi caja de Ubuntu (el binario funciona bien en mi Ubuntu x86), pero cuando copié el binario en el emulador, sigue apareciendo el mismo mensaje de error cuando intento ejecutarlo ( ) not executable: magic 7F45. Entonces, parece que ni las versiones ARM ni x86 funcionan en el emulador.

También tomé el binario redsocks que compilé en mi caja Ubuntu x86 y lo empujé a x86 AVD (SDK estándar), funcionó perfectamente. Entonces, ¿parece que el not executable: magic 7F45error no está relacionado con la compilación entre CPU?

¿Hay alguna forma de ejecutar calcetines rojos en Genymotion?

Respuestas (2)

¿ Qué file(1)utilidad dice sobre su binario compilado?

Debido a que compilar en una PC basada en x86 no promete que su binario siempre tendrá una plataforma de destino x86: GCC puede producir prácticamente cualquier destino.

No puede copiar libremente binarios desde su cuadro de Ubuntu al emulador uno, incluso si todos están basados ​​​​en x86, usan diferentes bibliotecas básicas del sistema operativo.

Para compilar el binario para el destino Android-x86, debe usar herramientas/entorno especiales de compilación cruzada. Consulte la cadena de herramientas de fuentes de Android para ver cómo configuran los conmutadores gcc+ld para crear binarios android-x86 en el cuadro de Ubuntu.