He compilado con éxito Ruby para Android y todo va bien en el emulador.
Pero mientras estoy probando estas cosas curiosas en mi dispositivo (Nexus4) me di cuenta de que /sdcard
(o /storage/emulated/0
) es un montaje fusible sin permisos de ejecución.
¿Cómo puedo ejecutar algo en la tarjeta SD?
He visto que en Linux se puede pasar como argumento al enlazador. En Android esto no funciona: /system/bin/linker
quiere un puntero a una estructura especial. Creo que puedo escribir un pequeño programa en C que cree esa estructura y ejecutar el enlazador para ejecutar un programa legible.
¿Pero qué pasa con las bibliotecas compartidas? Ruby carga decenas de bibliotecas compartidas (cada vez que tiene un "require"), apuesto a que se requieren permisos de ejecución para cargar bibliotecas compartidas.
Mover el ejecutable a /data/data/my.app.name/files/
o cualquier otro lugar no es una solución, mis binarios son muy gordos (enlazados estáticamente) y los usuarios deberían ser libres de especificar cualquier ubicación donde almacenarlos.