Compilar chicken scheme en la aplicación termux de Android
Chicken scheme
Llevo unas semanas trasteando con Chicken scheme y haciendo pruebas. La penúltima fue compilarlo en mi portátil (OpenSuse Tumbleweed) y tenerlo funcionando sin problemas. Eso me llevó a pensar que sería posible compilarlo en termux, el terminal de texto de Android. Al fin y al cabo, cuando hice la primera intentona en mi portátil me dijo:
> make Please select your target platform by running one of the following commands: make PLATFORM=solaris make PLATFORM=mingw-msys make PLATFORM=mingw make PLATFORM=macosx make PLATFORM=linux make PLATFORM=ios make PLATFORM=hurd make PLATFORM=haiku make PLATFORM=cygwin make PLATFORM=cross-linux-mingw make PLATFORM=bsd make PLATFORM=android make PLATFORM=aix for more information, consult the README file. GNUmakefile:64: *** No PLATFORM given.. Alto.
Básicamente pide una plataforma para la que compilar y me fijé en que
estaba Android entre ellas utilizando la variable PLATFORM
. También
es importante tener en mente otra variable que necesitará: PREFIX
.
Esta variable le indica al sistema dónde instalarlo. En mi caso,
puesto que me topé con problemas de permisos compilé en GNU/linux
con un PREFIX=~/opt
.
Compilar en termux
Hay varias cosas a tener en cuenta y algunas cosas que hay que instalar antes de comenzar la compilación. Evidentemente lo primero que necesitamos es descargar Chicken y descomprimirlo. En este caso he preferido bajar la versión estable en un archivo comprimido en lugar de la copia del repositorio git. La versión que he descargado es la 4.13.0
También hay que instalar algunas herramientas para compilar en termux.
apt install make clang gdb cgdb
He de decir que antes de instalar éstas aplicaciones ya tenía instaladas algunas otras como emacs, htop, openssh y mc, además de algunas librerías de las que dependen esas aplicaciones y quizás por ello no me ha pedido instalar ninguna dependencia más.
Con todo listo, compilar e instalar, que lo hice en dos pasos
make PLATFORM=android PREFIX=~/opt
y tras compilar si todo ha ido bien lo instalamos:
make PLATFORM=android PREFIX=~/opt install
He instalado en un subdirectorio del directorio personal por problemas de permisos. La tablet (una bq M10 fhd) se niega a ser rooteada y no tendría permisos de escritura en los directorios del sistema.
Para poder comenzar a utilizar las herramientas hace falta que el
sistema sepa dónde están. Para ello añadí dos líneas al fichero
.bashrc
de mi usuario en termux:
export PATH=$PATH:~/opt/bin export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/opt/lib:~/opt/lib/chicken/8
La segunda línea me costó un poco de tiempo darme cuenta del
problema. Cuando compilé en GNU/linux ldconfig
funciona
perfectamente, pero en termux no existe tal herramienta. Por eso hay
que decirle, manualmente dónde se encuentran las librerías locales.
La verdad es que todo ha sido más fácil de lo que me esperaba cuando empecé a hacerlo y ni siquiera sabía si se podía. Tengo el chicken scheme funcionando en la tablet, ¡qué cosas!