Red de conocimiento informático - Material del sitio web - Cómo desarrollar en un entorno OpenWRT

Cómo desarrollar en un entorno OpenWRT

1. Cree un entorno de desarrollo

En primer lugar, necesitamos personalizar un entorno de desarrollo para el enrutador. Puede consultar mi otro blog: "Construyendo su propio entorno de desarrollo OpenWrt". ". Aquí hay una simple adición. Después de ejecutar make menuconfig, aparecerá la siguiente imagen:

Entre ellos, la parte del cuadro rojo es la versión del sistema del enrutador que personalicé. Puede realizar diferentes elecciones según las diferentes. routers. ;La parte del cuadro verde indica que necesitamos compilar un entorno de desarrollo SDK (de forma predeterminada, este elemento no está seleccionado).

Durante el proceso de compilación, necesitamos descargar una gran cantidad de paquetes de software relacionados a través del sitio web oficial, por lo que debemos garantizar una conexión fluida a Internet. Debido a limitaciones de velocidad de descarga, el proceso de compilación demora aproximadamente unas horas. Después de la compilación, todos los productos se colocarán en el directorio raíz de compilación en bin/yourtarget/. Por ejemplo: los productos que compilo se colocan en /bin/brcm47xx/, que incluyen principalmente los siguientes tipos de archivos:

(1) Archivos .bin/.trx: estos archivos son para la categoría del sistema de destino Seleccionamos el firmware del enrutador compilado para diferentes modelos y versiones de enrutador. Estos diferentes modelos y versiones de enrutadores están preestablecidos por openwrt y no necesitamos cambiarlos. En cuanto a la diferencia entre .bin y .trx, hay un dicho que dice que cuando actualiza el enrutador por primera vez, debe usar el archivo .bin. Si necesita actualizar nuevamente, ya no podrá usar el .bin. archivo y necesita usar el archivo .trx. La razón es que el archivo .bin es un paquete de datos generado al encapsular la información de configuración del enrutador y el archivo .trx. Es decir, es un archivo .trx que contiene la información de la versión del enrutador. Durante la primera actualización del firmware, debemos proporcionar esta información, pero durante las actualizaciones posteriores, ya no es necesaria y se puede usar un archivo .trx.

(2) Carpeta de paquetes de software: contiene todos los paquetes de software compilados que configuramos en el archivo de configuración. De forma predeterminada, el paquete se seleccionará de forma predeterminada.

(3)OpenWrt-SDK.**.tar.bz2:? Este es también nuestro entorno SDK OpenWRT compilado personalizado. Lo usaremos para el desarrollo de paquetes OpenWrt. Por ejemplo, el entorno SDK que compilé es /bin/brcm47xx/OpenWrt-SDK-brcm47xx-for-Linux-x86_64-gcc-4.3.3 cs_uClibc-0.9.30.1.tar.bz2

Puedes ver del nombre Salida, el sistema de destino es brcm47xx, el sistema host es Linux-x86_64 y las herramientas y bibliotecas de compilación utilizadas son 4.3.3 cs_uClibc-0.9.30.1: este archivo registra los valores MD5 de todos los archivos que compilamos garantizar la integridad de los archivos. Los archivos incompletos pueden bloquear fácilmente su enrutador.

Lo principal que debe recordar es hacer una copia de seguridad del directorio bin compilado (si es importante para usted), porque make clean borrará todos los archivos del directorio bin antes de la siguiente compilación. !

2. Cambie el paquete de software original

En el directorio raíz del compilador, habrá un directorio dl, que en realidad es la abreviatura de "descargar". Los paquetes de software que deban descargarse de la red se ubicarán en este directorio. Una de las características de estos paquetes es que se instalarán automáticamente en el firmware que se está compilando, es decir, podremos utilizarlos en el compilador. . Una de las características de estos paquetes es que se instalan automáticamente en el firmware compilado, es decir, cuando hagamos menuconfig, se configurarán algunos paquetes para el firmware.

Si necesitamos cambiar estos paquetes, simplemente empaquete los paquetes modificados con el mismo nombre, colóquelos en este directorio y comience a compilar. Al compilar, el paquete se descomprime en el directorio build_dir.

Por supuesto, también puedes crear tu propio paquete en dl y cambiar los archivos de configuración relevantes para que openwrt pueda reconocer el paquete.

Dado que los cambios en mi proyecto se realizan bajo el capó, deben instalarse junto con el firmware. Entonces, el enfoque que utilicé fue cambiar directamente los paquetes en el directorio dl y luego recompilar el firmware. Esto es similar a la compilación del kernel de Linux. Lo compilé más de una docena de veces sin ningún problema.

3. Cree su propio paquete de software

Para su propio paquete de software nuevo, no es necesario instalar este paquete de software junto con el firmware. En otras palabras, se puede utilizar. como bolsa de software opcional. Podemos compilarlo por separado usando el entorno SDK, que generará un paquete ipk. Luego use opkg install xxx.ipk para instalar el software.

Aquí se explica cómo compilar el paquete helloword.

(1) Primero, escribe el programa helloworld

Escribe helloworld.c

/*************** *

* Helloworld.c

* El programa en C más simple jamás creado.

*Un mono epiléptico podría escribir este código.

******************/

#include lt; stdio.hgt

#include lt; unistd.lt;unistd.hgt;

int main(void)

{

printf("¡Diablos! Oh mundo, ¿por qué mi código no funciona? compilar?\n\n");

return 0;

}

Escribir Makefile

# Cuando el usuario ejecuta "make ", construye el archivo ejecutable helloworld

helloworld: helloworld.o

$(CC) $(LDFLAGS) helloworld.c

$(CC) $ ( CFLAGS) -c helloworld.c

# Elimina archivos objeto y archivos ejecutables cuando el usuario ejecuta "make clean"

clean:

rm *.

La ejecución de make en el directorio que contiene estos dos archivos debería generar el archivo ejecutable helloworld. Después de ejecutar helloworld, podrá imprimir "¡Diablos! Oh mundo, ¿por qué no se compila mi código? Este paso es para garantizar que nuestro programa fuente se compile normalmente. Aquí, lo trasladaremos a OpenWRT.

(2) Descomprimir OpenWrt-SDK-brcm47xx-for-Linux-x86_64-gcc-4.3.3 cs_uClibc-0.9.30.1.tar.bz2

tar -xvf OpenWrt- SDK - brcm47xx-for-Linux-x86_64-gcc-4.3.3 cs_uClibc-0.9.30.1.tar.bz2

(3) Ir al SDK

cd OpenWrt-SDK-brcm47xx - for-Linux-x86_64-gcc- 4.3.3 cs_uClibc-0.9.30.1.tar.bz21

Puede ver que la estructura de directorios interna es básicamente la misma que la del código fuente anterior, y los paquetes de software que necesita ser compilado necesita Colóquelo en el directorio del paquete

(4) Cree el directorio helloworld en el directorio del paquete

cd package

mkdir helloworld

cd helloworld

(5) Cree el directorio src y copie el archivo helloworld

mkdir src

cp /home/wrt/test/ helloworld .c src

cp /home/wrt/test/Makefile src

(6) Cree un Makefile en el directorio helloworld

Este Makefile es para que OpenWRT leer, y el Makefile escrito anteriormente es para lecturas de helloworld. Los dos Makefiles no están en el mismo directorio.

tocar Makefile

vim Makefile

(7) Regresar al directorio raíz del SDK

Ejecutar make para compilar

El proceso de compilación se completará en el directorio build_dir

Los resultados de la compilación se colocarán en el directorio bin/[[yourtarget]].yourtarget]/package helloworld_1_bcm47xx.ipk

(8) Cargue helloworld_1_bcm47xx .ipk

Utilice el software sftp para cargar helloworld_1_bcm47xx.ipk al enrutador

Ejecute opkg install helloworld_1_bcm47xx.ipk

Ingrese hello y presione la tecla Tab y descubra que openwrt tiene el comando ejecutable helloworld.

Ejecute helloworld para ver el efecto del programa.

¡Diablos! Dios mío, ¿por qué mi código no se compila?