2009-08-20 16 views
6

Estoy tratando de (cruzado) compilar obfuscated-openssh para el iPhone, y estoy teniendo algunos problemas. Estoy usando esto para configurar la construcción:compilando OpenSSH para iPhone?

./configure --host=arm-apple-darwin CC=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-apple-darwin9-gcc-4.0.1 \ 
CFLAGS="-arch armv6 -pipe -std=c99 -I/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.0.sdk/usr/include \ 
-L/Users/ben/iphonelib -Wno-trigraphs -fpascal-strings -fasm-blocks -O0 -Wreturn-type \ 
-Wunused-variable -fmessage-length=0 -fvisibility=hidden \ 
-miphoneos-version-min=2.0 -gdwarf-2 -mthumb \ 
-isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.0.sdk" \ 
CPP=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/cpp \ 
AR=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ar 

Esto no funciona, sin embargo, se quejan de no poder encontrar muchos archivos de cabecera, incluyendo netinet/in_systm.h y openssl/bn.h. ¿Alguien tiene alguna idea sobre cómo hacer que la construcción termine?

Respuesta

8

in_systm.h no está disponible en el iPhone. Solo define algunos tipos, y las otras piezas que incluye están disponibles. Entonces, puede copiar la versión de Mac del encabezado en el árbol de compilación y señalarlo. ("locate in_systm.h" es una buena forma de encontrar este tipo de cosas.)

Es muy probable que te encuentres con muchos más problemas como este, pero así es como te diriges a in_systm.h.

+1

Supongo que esto podría funcionar, pero de hecho faltan muchos archivos de encabezado, y estoy buscando una manera limpia de resolver todos los problemas a la vez. –

+4

Es poco probable que encuentre una solución de un solo paso en general. No todas las API de OSX están disponibles en iPhone. Transmitir un marco complejo al iPhone suele ser difícil (aunque generalmente posible). Su mejor opción es buscar "openssh iphone" y ver cómo otros han atacado el problema anteriormente. La mayor parte del trabajo ha estado en la creación de servidores (lo que generalmente significa hacer jailbreaking el teléfono). ¿Asumo que estás haciendo un cliente en este caso? Sin embargo, los problemas de portabilidad subyacentes deberían ser similares. Pero no puedo prometer que haya una solución de "configure esta bandera y funcionará". Para código como openssh, es poco probable. –

+0

Hice extensas búsquedas en Google, pero no pude encontrar opciones de configuración que otros hayan utilizado. (Y tiene razón, estoy intentando compilar el cliente.) –

2

Openssh depende de las bibliotecas de openssl. Probablemente necesites construir eso primero.

Recientemente tuve que agregar soporte ssh a un sistema integrado y usé Dropbear. Era mucho más fácil comenzar a funcionar que openssh. Nos dio soporte para scp, ssh y sshd con un ejecutable de 300k. Supuestamente, para ssh solo puedes bajarlo a ~ 110K.

1

Hay un repositorio disponible con Cydia (y con apt) donde OpenSSH está disponible: Telesphoreo. Sabemos que el equipo portó el servidor OpenSSH, lo que significa que han modificado el código fuente para compilarlo en la plataforma objetivo.