Openwrt Compilar Programa Externo

De Wiki de BandaAncha.eu
Saltar a: navegación, buscar

Prefacio

Aunque el firmware Openwrt es utilizado sobre para temas de routing, en realidad , es un Sistema Operativo multi-proposito, para sistemas embebidos. En su día me topé con la problemática de que quería hacer funcionar una impresora en Openwrt Chaos Calmer. Encontré tutoriales sobre cómo instalar CUPS, pero ninguno sobre cómo instalar el filtro especificado de la impresora (que tiene dos componentes: uno universal, que es un fichero PPD, y otro, que es un ejecutable binario que hay que compilar). El binario asociado al filtro, era proporcionado por el fabricante, y la verdad, compilarlo e instalarlo en un ordenador es tan sencillo como hacer un configure, make y make install. Ahora bien, la compilación para Openwrt se hace en una máquina externa, ¿cómo compilamos un binario compatible con nuestro router, pero desde nuestro propio ordenador? ¿Cómo instalamos y usamos el toolchain de Openwrt? Pues este ultimo tiene bastante envoltorios, y no basta con una simple añadidura al $path. A modo de ejemplo, mostraré cómo se compila un ejecutable para Huawei HG556A.

Preparativos

Requisitos Previos

Los requisitos previos son los del propio toolchain de Openwrt Una vez cumplidos los prerequisitos, necesitamos básicamente dos elementos

  1. El toolchain (llamado también SDK), para nuestro router. Para HG556A y Barrier Breaker, es este
  2. El código fuente del ejecutable, compuesto por un fichero de código fuente y un Makefile interno ligeramente modificado... Pongo el Makefile interno, a modo de ejemplo:
# build helloworld executable when user executes "make"
rastertostar: rastertostar.o
    $(CC) $(LDFLAGS) rastertostar.o -o rastertostar -lcups -lcupsimage
rastertostar.o: rastertostar.c
    $(CC) $(CFLAGS) -c rastertostar.c
# remove object files and executable when user executes "make clean"
clean:
    rm *.o rastertostar