¿Cómo cruzar la compilación de OpenSSH para ARM?
Estoy tratando de compilar OpenSSH utilizando el Android NDK, pero no.
Mi intento consiste en los siguientes pasos:
- PÁNICO: Programa de motor emulador que falta para CPUS de 'brazo'
- ARM Neon Assembler - Extraño problema de oleoductos
- Android SDK para ARM
- ¿Es posible ejecutar un binario de brazo nativo en un teléfono Android no enraizado?
- ¿Por qué usar el código armeabi-v7a sobre el código armeabi?
-
compile OpenSSL para Android e instale encabezados / bibliotecas en
/home/me/arm
-
toma OpenSSH 6.2p1 desde aquí
-
extraer el archivo y ejecutar
./configure
:./configure --prefix = / home / me / arm \ --host = arm-linux-androideabi \ --with-ssl-dir = / home / me / arm
… que resultó en el siguiente error:
getrrsetbyname.c: 166: 2: error: nombre de tipo desconocido 'HEADER'
-
modifique el comando
./configure
para incluir:ac_cv_search_getrrsetbyname = sí
… que fijó el problema uno pero todavía abortado con otro error:
/usr/include/linux/un.h:17:8: error: redefinición de 'struct sockaddr_un'
-
modifique de nuevo el comando
./configure
para incluir:ac_cv_header_sys_un_h = sí
… que me hizo aún más, pero todavía abortado con un error:
channels.c: En la función 'channel_prepare_select': channels.c: 2143: 2: warning: declaración implícita de función 'howmany' [Declaración de función-Wimplicit] channels.c: 2145: 45: error: 'fd_mask' no declarado (primer uso en esta función)
Ahora estoy atascado. He abierto el sistema sys/select.h
y descubrí que fd_mask
no está definido en ninguna parte . También no pude encontrar una opción ./configure
para evitar esto. También existe el problema de que howmany()
esté indefinido.
¿Qué cambios debo hacer para que el programa compile?
Edit: He conseguido un poco más lejos ahora. He añadido la siguiente línea a ./configure
para superar el error "undefined fd_mask
":
--with-cflags = -Dfd_mask = int
Entonces recibí el error siguiente:
error: 'struct passwd' no tiene ningún miembro 'pw_gecos'
La estructura passwd
de Android no tiene un miembro pw_gecos
. Este era imposible de corregir sin crear un parche real para el código fuente. El parche está aquí .
Ahora estoy atascado con el siguiente error:
dns.c: En la función 'dns_result_totext': dns.c: 56: 7: error: 'ERRSET_SUCCESS' no declarado (primer uso en esta función) dns.c: 56: 7: nota: cada identificador no declarado se informa sólo una vez por cada función aparece en dns.c: 58: 7: error: 'ERRSET_NOMEMORY' no declarado (el primer uso en esta función) ...
Edit: He hecho algunas modificaciones en el parche anterior que eliminan bastantes de los errores hasta ahora. También he añadido ldns
. El comando configure ahora se parece a esto:
parche -p0 <openssh.patch; autoconf; ./configure --prefix = / home / me / arm \ --host = arm-linux-androideabi \ --with-ldns = / home / me / arm \ --with-ssl-dir = / home / me / arm \ ac_cv_header_sys_un_h = sí
… y aquí está el nuevo parche. Los errores que tengo ahora son:
loginrec.c: En la función 'construct_utmp': loginrec.c: 665: 17: error: 'DEAD_PROCESS' no declarado (primer uso en esta función) loginrec.c: 665: 17: nota: cada identificador no declarado se informa sólo una vez para cada función que aparece en loginrec.c: En el nivel superior: loginrec.c: 727: 45: warning: 'struct utmpx' declarada dentro de la lista de parámetros [activado de forma predeterminada]
- Ejemplo de Android BSP (fuente) para ARM
- Compilador JIT de Dalvik en Linux X86 o Mac build
- NDK: cómo construir una lib, por lo que la aplicación puede trabajar en brazo (s), x86, etc?
- ¿Cómo afectar a la generación de código Delphi XEx para objetivos Android / ARM?
- El valor de bogoMIPS está cambiando
- ¿Hay una tarjeta PCI Android?
- Ejecución del SDK de Android en ARM-netbook (Ubuntu)
- ¿Consigo un bono de rendimiento si intento utilizar comandos de ensamblador de matemáticas de brazo en lugar de c