Edición de «Openwrt Compilar Programa Externo»
Advertencia: no has iniciado sesión. Tu dirección IP se hará pública si haces cualquier edición en estas condiciones. Si inicias sesión o creas una cuenta, tus ediciones se atribuirán a tu nombre de usuario, además de otros beneficios.
Puedes deshacer la edición. Antes de deshacer la edición, comprueba la siguiente comparación para verificar que realmente es lo que quieres hacer, y entonces guarda los cambios para así efectuar la reversión.
Revisión actual | Tu texto | ||
Línea 1: | Línea 1: | ||
− | + | ==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. | 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. | A modo de ejemplo, mostraré cómo se compila un ejecutable para Huawei HG556A. | ||
− | + | ==Preparativos== | |
− | + | ===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 | Una vez cumplidos los prerequisitos, necesitamos básicamente dos elementos | ||
Línea 104: | Línea 101: | ||
$(eval $(call BuildPackage,rastertostar)) | $(eval $(call BuildPackage,rastertostar)) | ||
</pre> | </pre> | ||
− | + | ===Preparación del entorno de compilación cruzada=== | |
Hacer que el SDK se autocompile (ver la documentación oficial de Openwrt) | Hacer que el SDK se autocompile (ver la documentación oficial de Openwrt) | ||
− | + | ==Compilación del binario== | |
#Colocamos el Makefile envoltorio en una subcarpeta del SDK, que en mi caso es /home/barfelix/arcadyan/OpenWrt-SDK-15.05.1-brcm63xx-smp_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-x86_64/package/feeds/printing/rastertostar | #Colocamos el Makefile envoltorio en una subcarpeta del SDK, que en mi caso es /home/barfelix/arcadyan/OpenWrt-SDK-15.05.1-brcm63xx-smp_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-x86_64/package/feeds/printing/rastertostar | ||
#P.e., en la carpeta arriba mencionada, creamos una subcarpeta que en mi caso se llama src, dondé está todo el arbol de código fuente (con su Makefile de fábrica) | #P.e., en la carpeta arriba mencionada, creamos una subcarpeta que en mi caso se llama src, dondé está todo el arbol de código fuente (con su Makefile de fábrica) | ||
− | |||
− | |||
− |