Diferencia entre revisiones de «Openwrt Compilar Programa Externo»

De Wiki de BandaAncha.eu
Saltar a: navegación, buscar
(Página creada con «==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...»)
 
Línea 1: Línea 1:
 
==Prefacio==
 
==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 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 tiene bastante envoltorios, y no basta con una simple añadidura al $path.
+
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==
 
==Preparativos==
 
===Requisitos Previos===
 
===Requisitos Previos===
 
Los requisitos previos son los del propio [https://wiki.openwrt.org/doc/howto/buildroot.exigence toolchain de Openwrt]
 
Los requisitos previos son los del propio [https://wiki.openwrt.org/doc/howto/buildroot.exigence toolchain de Openwrt]
 +
Una vez cumplidos los prerequisitos, necesitamos básicamente dos elementos
 +
#El toolchain (llamado también SDK), para nuestro router. Para HG556A y Barrier Breaker, [https://downloads.openwrt.org/chaos_calmer/15.05.1/brcm63xx/generic/OpenWrt-SDK-15.05.1-brcm63xx-generic_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-x86_64.tar.bz2 es este]
 +
#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:
 +
 +
<nowiki>
 +
# 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
 +
</nowiki>

Revisión del 20:15 3 may 2017

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