Usando el SDK
El SDK es una cadena de herramientas(toolchain) pre-compilada, diseñada para la compilación cruzada(cross compile) de paquetes para una arquitectura específica sin compilar todo el sistema desde cero.
Cosas que se pueden hacer con el SDK:
- Compilar software personalizado para una versión específica a la vez que garantizar la compatibilidad de binarios y funciones
- Compilar versiones más recientes de ciertos paquetes para una versión específica
- Recompilar paquetes existentes con parches personalizados o características diferentes
Prerrequisitos
El SDK tiene los mismos requisitos previos que el sistema buildroot, así que consulte la página Build system – Installation para instalar el software necesario para crear los paquetes en el SDK.
Nota: En algunos hosts es necesario instalar el paquete ccache
Hágalo todo como un usuario normal, no utilice root o sudo!
No compile en un directorio con espacios en algún lugar de su ruta. Bien=/home/codigosfuente/openwrtSDK | Mal=/home/codigos fuente/openwrtSDK
Obtener el SDK
Puede descargar un SDK precompilado o compilarlo desde el código fuente. La compilación desde el código fuente es simplemente habilitar la opción menuconfig Build the OpenWrt SDK
(CONFIG_SDK).
El SDK precompilado se encuentra en la misma carpeta de descarga donde se encuentran las imágenes de firmware para su dispositivo.
Descargas
- LEDE 17.01.6 → Platforms → Supplementary Files → lede-sdk-17.01.6-<Platform>_gcc-<version>_musl-<version>.Linux-x86_64.tar.xz
Package Feeds
Después de descomprimir el archivo SDK, edite opcionalmente el archivo feeds.conf.default
para agregar los package feeds. De forma predeterminada, contendrá los feeds utilizados cuando se construyó el SDK. Pueden agregarse feeds propios, locales o remotos, como si se usara buildroot. Si simplemente está reconstruyendo paquetes adicionales, no necesita hacer esto.
Cargar listas de paquetes
- Use el comando
./scripts/feeds update -a
para obtener y actualizar las definiciones de los paquetes. - Después de que las definiciones de los paquetes hayan sido actualizadas, utilice el comando
./scripts/feeds install <packagename>
para preparar los paquetes y sus dependencias. - El comando
./scripts/feeds install -a
pondrá otra vez disponibles todos los paquetes, igual que en el buildroot.
Uso
Seleccionar Paquetes
Abrir una terminal en la carpeta del SDK y abrir el menú del SDK escribiendo make menuconfig
El sistema menuconfig del SDK es igual que el del buildroot. Las instrucciones están en la parte superior, y la ayuda está disponible a través de la tecla ?
.
Tal vez usted quiera deshabilitar algunas opciones predeterminadas, las cuales compilan todos los paquetes disponibles.
Entre en Global Build Settings
y en el submenú deseleccione/excluya las siguientes opciones:
Select all target specific packages by default
Select all kernel module packages by default
Select all userspace packages by default
Continúe en el menú, encuentre el paquete que usted quiera compilar y selecciónelo presionando “m”, esto seleccionará también todas sus dependencias, y podrá usted ver que quedaron marcadas con “<M>” en el menú. Se pueden seleccionar también varios paquetes.
Guarde la configuración y salga del menú.
Compilar Paquetes
Después de que el Makefile esté en su lugar, se aplican los comandos habituales de buildroot:
make package/example/download
- descargar los “sources” de examplemake package/example/prepare
- extraer los “sources”, aplicar los parches y descargas si es necesariomake package/example/compile
- compilar example, preparar y descargar si es necesariomake package/example/clean
- limpiar el “sourcecode”make package/index
- construye un índice de repositorios para hacer el directorio de salida utilizable como una fuente opkg local
O simplemente make
para compilar todo lo seleccionado. (Se puede compilar más rápido escribiendo make -j5
o lo apropiado para tu “build host”)
Después de que la compilación finalice, los archivos .ipk generados estarán en los directorios bin/packages y bin/targets dentro de la carpeta raíz del SDK.
Inconvenientes
Algunas versiones del SDK tienes errores....