2009-08-20 9 views
6

Próbuję (cross-) skompilować obfuscated-openssh dla iPhone'a i mam pewne problemy. Używam tego do skonfigurowania build:kompilacja OpenSSH na iPhone'a?

./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 

ten nie działa, choć narzekają nie jest w stanie znaleźć wiele plików nagłówkowych, w tym netinet/in_systm.h i openssl/bn.h. Czy ktoś ma jakieś pomysły, jak wykonać wykończenie?

Odpowiedz

8

in_systm.h nie jest dostępny na iPhone. Określa tylko kilka typów, a pozostałe elementy, które obejmuje, są dostępne. Więc możesz po prostu skopiować wersję Mac nagłówka do drzewa kompilacji i wskazać na niego. ("zlokalizuj in_systm.h" to dobry sposób na znalezienie tego rodzaju rzeczy.)

Możesz napotkać wiele innych problemów, ale to tak, jak adresować in_systm.h.

+1

Przypuszczam, że to może działać, ale w rzeczywistości brakuje wielu plików nagłówkowych i szukam sposobu na rozwiązanie wszystkich problemów naraz. –

+4

Jest mało prawdopodobne, aby znaleźć jednoetapowe rozwiązanie w ogóle. Nie wszystkie API OSX są dostępne na iPhone'ie. Przesyłanie złożonych ram do iPhone'a jest często trudne (choć ogólnie możliwe). Najlepiej jest wyszukać "openssh iphone" i zobaczyć, jak inni wcześniej zaatakowali problem. Większość prac polegała na tworzeniu serwerów (co zwykle oznacza jailbreaking telefonu). Zakładam, że robisz klienta w tym przypadku? Podstawowe problemy z portowaniem powinny być jednak podobne. Ale nie mogę obiecać, że istnieje jakakolwiek opcja "ustaw tę flagę i będzie działać". Dla kodu takiego jak openssh, jest to mało prawdopodobne. –

+0

Zrobiłem obszerny Googling, ale nie mogłem znaleźć opcji konfiguracji, z których korzystali inni. (I masz rację, próbuję skompilować klienta.) –

2

Openssh zależy od bibliotek openssl. Najpierw będziesz prawdopodobnie musiał to zbudować.

Niedawno musiałem dodać obsługę ssh do systemu wbudowanego i używać Dropbear. O wiele łatwiej było zacząć działać, niż openssh. Dało nam to wsparcie dla scp, ssh i sshd z plikiem wykonywalnym 300k. Podobno dla ssh tylko możesz go obniżyć do ~ 110K.

1

Dostępne jest repozytorium z Cydią (iz apt), gdzie OpenSSH jest dostępne: Telesphoreo. wiem, że zespół przeprowadził przeniesienie serwera OpenSSH, co oznacza, że ​​zmodyfikował kod źródłowy, aby mógł zostać skompilowany na platformie docelowej.