2009-08-20 96 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服务器,这意味着他们已经修改了源代码,以便在目标平台上进行编译。