¿Cómo compilar un software para openwrt existente que no está disponible en opkg?
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
# p>
#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 p>
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 p>
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 .