2009-08-20 79 views
6

我試圖(交叉)爲iPhone編譯obfuscated-openssh,我遇到了一些問題。我使用這個配置構建:爲iPhone編譯OpenSSH?

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

這不起作用,但是,抱怨不能夠找到很多的頭文件,包括netinet/in_systm.hopenssl/bn.h。有沒有人有任何想法如何使構建完成?

回答

8

in_systm.h在iPhone上不可用。它只定義了幾種類型,其中包含的其他部分可用。因此,您可以將Mac版本的頭文件複製到構建樹中並指向它。 (「找到in_systm.h」是找到這些東西的好方法。)

你可能會碰到更多這樣的問題,但這就是如何解決in_systm.h

+1

我想這可能會工作,但事實上有很多頭文件丟失,我正在尋找一種乾淨的方式來一次解決所有的問題。 – 2009-08-21 23:38:58

+4

您不太可能找到一般的一步式解決方案。並非所有的OSX API都可以在iPhone上使用。將複雜的框架移植到iPhone通常很困難(儘管通常是可行的)。你最好的選擇是搜索「openssh iphone」,看看別人以前是如何攻擊這個問題的。大部分工作一直在創建服務器(通常意味着越獄手機)。我假設你在這種情況下做客戶?但是,相關的移植問題應該是相似的。但我不能保證有任何「設置這個標誌,它會工作」的解決方案。對於像openssh這樣的代碼,這是不可能的。 – 2009-08-22 01:03:25

+0

我做了大量的谷歌搜索,但無法找到其他人使用的配置選項。 (你是對的,我試圖編譯客戶端。) – 2009-08-22 04:39:25

2

Openssh依賴於openssl庫。你可能需要首先構建它。

我最近不得不添加ssh支持到嵌入式系統,並使用Dropbear。起牀和跑步比openssh容易得多。它給了我們一個300k可執行文件的scp,ssh和sshd支持。據說,對於ssh,只有你可以把它降到〜110K。

1

有一個可用於Cydia(和apt)的倉庫,其中有OpenSSH可用:Telesphoreo。知道團隊移植了OpenSSH服務器,這意味着他們已經修改了源代碼,以便在目標平臺上進行編譯。