Red de conocimiento informático - Material del sitio web - ¿Cómo compilar un software para openwrt existente que no está disponible en opkg?

¿Cómo compilar un software para openwrt existente que no está disponible en opkg?

Primero, instale el entorno de compilación (tomando ubuntu10.10 como ejemplo)

Ingrese los siguientes comandos en secuencia:

1. Software requerido para el entorno de desarrollo de Ubuntu:

Sudo

apt-get install gcc g++ binutils parche bzip2 flex bison make autoconf

gettext texinfo descomprimir sharutils subversion libncurses 5-dev ncurses-term

zlib1g-dev gawk

sudo apt-get update

Crear un directorio

mkdir openwrt

3. Obtenga el código fuente de OpenWrt y paquete de instalación y actualización.

SVN consulte SVN://SVN . openwrt org/openwrt/backfire

cd backfire

. /scripts/feedsupdate-a

. /scripts/feeds install -a

4. Configurar las opciones de compilación

Realizar la configuración del menú

Seleccione Broadcom BCM63xx en el sistema de destino y seleccione otro software según sea necesario. .

*: Indica que el módulo se compila directamente en el núcleo.

m: Este módulo es compatible con el núcleo y se puede instalar más adelante.

En blanco: este módulo no es compatible.

Se necesita más Google para saber qué hace el módulo específico;

5. Después de guardar la configuración de la opción de compilación, comience a compilar.

Establecer V=99

V=99 significa generar información de depuración detallada;

En segundo lugar, preparación

1. Descargar el archivo fuente.

Dirección de descarga: tlm/, la última versión es 0.91rc ​​​​6;;

2. Obtenga el código md5sum.

Ingrese al directorio del archivo descargado e introdúzcalo en la terminal.

MD 5 sum cntlm-0.91rc ​​​​6 . tar .

Obtenga el código de verificación md5: 21 CCD 60294269 CB 8 FBE 3 e 49374 ab 1b.

3. Escriba un archivo Makefile

Cree un nuevo directorio cntlm en el directorio del paquete en el directorio openwrt/backfire, cree un nuevo archivo en el directorio cntlm, asígnele el nombre makefile y edítelo. el archivo MAKE y agregue el siguiente contenido:

-

#

#Copyright 2006-2008 OpenWrt.org

#

#Este es un software gratuito con licencia pública general GNU v2.

#Ver /LICENCIA para más información.

#

Contiene $(TOPDIR)/rules.mk

PKG_NAME:=cntlm

PKG _Version:=0.91rc6< / p>

PKG _release:=1

PKG _source:= $(PKG _name)-$(PKG _version).tar.gz

URL de origen del PKG:=tlm/

PKG _ MD5 suma:= 21 CCD 60294269 CB 8 FBE 3 e 2e 49374 ab 1b

PKG _Instalación:=1

INCLUDE $(INCLUDE _ DIR )/paquete . MK

Definir paquete/contenedor

Submenú:=servidor proxy

SECCIÓN:=net

Categoría:=Red

TITLE:=Cntlm es un proxy de autenticación ntlm rápido

URL:=tlm.sourceforge.net/

endef

Definir paquete /directorio/instalación

$(directorio de instalación)$(1)/usr/sbin

$(CP) $(directorio de instalación de PKG)/usr /sbin/cntlm $(1 )/usr/sbin/

$(directorio de instalación)$(1)/usr/share/man/man 1

$(CP) $ (directorio de instalación de PKG)/usr /share/man/man 1/$(nombre del paquete 1 $(1)/usr/share/man/man 1

$(directorio de instalación)$(1 )/etc/

$(CP) $(directorio de instalación de PKG)/etc/cntlm.conf $(1)/etc/

endef

$ (eval $(call BuildPackage, cntlm))

-

Escribir archivo de parche

Dado que el núcleo de BCM63xx es grande.

Endian, pero las CPU Intel o AMD más utilizadas son menos.

Endian, aunque cntlm puede detectar el endian del entorno de compilación por sí solo, estamos compilando en un entorno de compilación cruzada. cntlm detecta el endian del sistema ubuntu, por lo que el endian manual debe configurarse en. grande.

endian.Específicamente, el rc del archivo config/endian.c en el archivo fuente está establecido en 0.

Copie el archivo endian.c en el archivo fuente al directorio de configuración en el directorio A y al directorio de configuración en el directorio B. Abra el archivo endian.c en el directorio de configuración en el directorio B y modifíquelo para:

-

#Incluye

#Incluye

int main(int argc, char **argv) {

int rc

RC = 0;

printf("%s\n ",rc? "Little Endian": "Big Endian");

Regresar a RC;

}

-

Luego guárdalo.

Ejecute:

diff-Naur a/config/endian.c b/config/endian.c>endian.patch

El archivo endian.patch contiene el siguiente contenido:

-

- a/config/endian.c

+++b/config/endian c 2010-11-01 18: 36:32.000000000800

@@ -1,15 +1,11 @@

#incluye

#incluye

- uint8_t num[] = { 0xEF, 0x ser }

-/*

- * RC: 1 = LE, 0 = SER

- */

int main(int argc, char **argv) {

int rc

-RC =(*((uint 16 _ t *)num) = = 0x carne);

+RC = 0;

printf("%s\n ",rc? "Little Endian": "Big Endian");

Regresar a RC;

-

Copie el archivo endian.patch al directorio paquete/cntlm/patches/ (si no hay un directorio de parches, cree un nuevo directorio ).

Tercero, compilar

1. Paquete de instalación seleccionado

Entrada de terminal:

Crear configuración de menú

Seleccionar cntlm "——" servidor proxy en la red;

2 Comience a compilar

Entrada del terminal:

make package/cntlm/compile V= 99

Puede haber algunas notas en el medio, así que puedes ignorarlas. Una vez completada la compilación, puede ver el archivo cntlm _ 0.91rc ​​​​6-1 _ brcm 63 xx en el directorio bin/packages.

Cuarto, complementario

Como se mencionó anteriormente, aparecerá un comentario durante la compilación, generalmente de la siguiente manera:

utils.c:1: Nota: Alguien no corríjalo Cumplir con COPTS, pasado 0 veces

Esto se debe a que la configuración CFLAG en el archivo fuente cntlm es una anulación en lugar de una continuación. A diferencia de openwrt, en openwrt generalmente se escribe en forma de CFLAG +=. Los comentarios se pueden eliminar mediante las siguientes modificaciones:

Copie el Makefile en el paquete de archivos fuente al directorio A y al directorio B, abra el Makefile en el directorio B y realice las siguientes modificaciones:

CFLAGS+= $(flag)

Agrega el signo "+" arriba y guarda.

Ejecute:

diff-Naur a/Makefile b/Makefile>makefile.patch

El archivo makefile.patch obtenido es el siguiente:

-

-a/Makefile 2010-04-29 19:18:58.000000000800

+++b/Makefile 2010-119 20:17:33.405177000800

@@ -16,7 +16,7 @@

CC=gcc

VER= `versión gato'

objs = utils . o NTLM . o xcrypt . o config . o socket .