2009-08-20 15 views
6

Sto provando a (cross-) compilare obfuscated-openssh per l'iPhone e sto incontrando alcuni problemi. Sto usando questo per configurare la compilazione:compilando OpenSSH per 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 

Questo non funziona, però, lamentandosi di non essere in grado di trovare molti file header, tra cui netinet/in_systm.h e openssl/bn.h. Qualcuno ha qualche idea su come rendere la finitura della costruzione?

risposta

8

in_systm.h non disponibile su iPhone. Definisce solo alcuni tipi e gli altri pezzi che include sono disponibili. Quindi potresti essere in grado di copiare semplicemente la versione Mac dell'intestazione nell'albero di compilazione e puntare ad essa. ("locate in_systm.h" è un buon modo per trovare questo tipo di cose.)

Si può benissimo incorrere in molti altri problemi come questo, ma questo è come rivolgersi a in_systm.h.

+1

Suppongo che questo potrebbe funzionare, ma ci sono in effetti molti file di intestazione mancanti e sto cercando un modo pulito per risolvere tutti i problemi contemporaneamente. –

+4

È improbabile che si trovi una soluzione in un'unica fase in generale. Non tutte le API OSX sono disponibili su iPhone. Portare un quadro complesso su iPhone è spesso difficile (anche se generalmente possibile). La cosa migliore è cercare "openssh iphone" e vedere come altri hanno già attaccato il problema. La maggior parte del lavoro è stato nella creazione di server (che in genere significa jailbreak del telefono). Suppongo che tu stia facendo un cliente in questo caso? I problemi di porting sottostanti dovrebbero essere simili, comunque. Ma non posso promettere che esiste una soluzione "imposta questa bandiera e funzionerà". Per codice come openssh, è improbabile. –

+0

Ho fatto ricerche approfondite su Google, ma non sono riuscito a trovare le opzioni di configurazione che altri hanno utilizzato. (E hai ragione, sto tentando di compilare il client.) –

2

Openssh dipende dalle librerie openssl. Probabilmente dovrai prima costruirlo.

Recentemente ho dovuto aggiungere il supporto ssh a un sistema incorporato e utilizzato Dropbear. Era molto più facile mettersi in funzione rispetto a openssh. Ci ha dato supporto per scp, ssh e sshd con un eseguibile da 300k. Presumibilmente, per ssh solo tu puoi farlo scendere a ~ 110K.

1

C'è un repository disponibile con Cydia (e con apt) dove OpenSSH è disponibile: Telesphoreo. sapere che il team ha portato il server OpenSSH, il che significa che hanno modificato il codice sorgente per farlo compilare sulla piattaforma di destinazione.