使用Cygwin为Windows XP构建iPhone

时间:2009-09-02 19:06:35

标签: iphone windows cygwin getopt msgfmt

Write native iPhone applications using Eclipse CDT How Windows and Linux developers can bypass the iPhone SDK and write iPhone apps using open source tools” 作者:PJ Cabrera(pjcabrera@pobox.com)

我按照本文档中的说明进行操作,并认为我做得很远,但我收到错误,并想知道您是否知道发生了什么。

当我输入命令时,它开始编译。大约30分钟后,我得到你在下面看到的错误。 ./make-toolchain.sh

这是错误:

test -d po || mkdir po
checking whether getopt is declared... /cygdrive/c/downloads/mono/Mono-2.4/bin/m
sgfmt --statistics -o po/be.gmo /cygdrive/c/projects/tools/home/iphone-2.0-toolc
hain/src/gcc/libcpp/po/be.po
c:\downloads\mono\Mono-2.4\bin\msgfmt.exe: error while opening "/cygdrive/c/proj
ects/tools/home/iphone-2.0-toolchain/src/gcc/libcpp/po/be.po" for reading: No su
ch file or directory
make[2]: *** [po/be.gmo] Error 1
make[2]: Leaving directory `/cygdrive/c/projects/tools/home/iphone-2.0-toolchain
/build/gcc-4.2-iphone/libcpp'
make[1]: *** [all-libcpp] Error 2
make[1]: *** Waiting for unfinished jobs....
no
checking whether clock is declared... yes
checking whether getpagesize is declared... yes
checking whether clearerr_unlocked is declared... no
checking whether feof_unlocked is declared... no
checking whether ferror_unlocked is declared... no
checking whether fflush_unlocked is declared... no
checking whether fgetc_unlocked is declared... no
checking whether fgets_unlocked is declared... no
checking whether fileno_unlocked is declared... no
checking whether fprintf_unlocked is declared... no
checking whether fputc_unlocked is declared... no
checking whether fputs_unlocked is declared... no
checking whether fread_unlocked is declared... no
checking whether fwrite_unlocked is declared... no
checking whether getchar_unlocked is declared... yes
checking whether getc_unlocked is declared... yes
checking whether putchar_unlocked is declared... yes
checking whether putc_unlocked is declared... yes
checking whether getrlimit is declared... yes
checking whether setrlimit is declared... yes
checking whether getrusage is declared... yes
checking whether ldgetname is declared... no
checking whether times is declared... yes
checking whether sigaltstack is declared... no
checking for struct tms... yes
checking for clock_t... yes
checking for .preinit_array/.init_array/.fini_array support... no
checking if mkdir takes one argument... no
For  real value is
For  real value is
Using `/cygdrive/c/projects/tools/home/iphone-2.0-toolchain/src/gcc/gcc/config/arm/arm.c' for machine-specific logic.
Using `/cygdrive/c/projects/tools/home/iphone-2.0-toolchain/src/gcc/gcc/config/'
 for machine-specific C++ logic.
Using `/cygdrive/c/projects/tools/home/iphone-2.0-toolchain/src/gcc/gcc/config/a
rm/arm.md' as machine description file.
Using the following target machine macro files:
        /cygdrive/c/projects/tools/home/iphone-2.0-toolchain/src/gcc/gcc/config/arm/arm.h
        /cygdrive/c/projects/tools/home/iphone-2.0-toolchain/src/gcc/gcc/config/darwin.h
        /cygdrive/c/projects/tools/home/iphone-2.0-toolchain/src/gcc/gcc/config/darwin9.h
        /cygdrive/c/projects/tools/home/iphone-2.0-toolchain/src/gcc/gcc/config/arm/darwin.h
        /cygdrive/c/projects/tools/home/iphone-2.0-toolchain/src/gcc/gcc/config/arm/darwin.h
Using `/cygdrive/c/projects/tools/home/iphone-2.0-toolchain/src/gcc/gcc/config/i386/xm-cygwin.h' as host machine macro file.

Using host-cygwin.o for host machine hooks.
checking whether NLS is requested... yes
checking for catalogs to be installed...  be ca da de el es fr ja nl ru rw sr sv
 tr zh_CN zh_TW
checking for library containing RegOpenKeyExA... no
checking what assembler to use... /usr/local/bin/arm-apple-darwin9-as
checking what linker to use... /usr/local/bin/arm-apple-darwin9-ld
checking for arm-apple-darwin9-nm... /usr/local/bin/arm-apple-darwin9-nm
checking what nm to use... /usr/local/bin/arm-apple-darwin9-nm
checking for arm-apple-darwin9-objdump... no
checking what objdump to use... not found
checking assembler for .balign and .p2align... no
checking assembler for .p2align with maximum skip... yes
checking assembler for .literal16... yes
checking assembler for working .subsection -1... no
checking assembler for .weak... no
checking assembler for .weakref... no
checking assembler for .nsubspa comdat... no
checking assembler for .hidden... no
checking linker for .hidden support... no
checking assembler for .sleb128 and .uleb128... no
checking assembler for eh_frame optimization... no
checking assembler for section merging support... no
checking assembler for section merging support... (cached) no
checking assembler for COMDAT group support... no
checking assembler for COMDAT group support... no
checking assembler for thread-local storage support... no
checking linker -Bstatic/-Bdynamic option... no
checking assembler for dwarf2 debug_line support... no
checking assembler for buggy dwarf2 .file directive... no
checking assembler for --gdwarf2 option... no
checking assembler for --gstabs option... yes
checking linker read-only and read-write section mixing... unknown
checking linker PT_GNU_EH_FRAME support... no
checking linker position independent executable support... no
checking linker --as-needed support... no
checking linker --sysroot support... no
checking __stack_chk_fail in target C library... checking for __stack_chk_fail..
. no
no __stack_chk_fail on this target
no
Using ggc-page for garbage collection.
checking whether to enable maintainer-specific portions of Makefiles... no
Links are now set up to build a cross-compiler
 from i686-pc-cygwin to arm-apple-darwin9.
updating cache ./config.cache
configure: creating ./config.status
config.status: creating Makefile
config.status: creating gccbug
config.status: creating mklibgcc
config.status: creating libada-mk
config.status: creating ada/Makefile
config.status: creating auto-host.h
config.status: executing default commands
make[1]: Leaving directory `/cygdrive/c/projects/tools/home/iphone-2.0-toolchain
/build/gcc-4.2-iphone'
make: *** [all] Error 2

This script requires that you enter the proper administrator password
in order to install gcc-4.2-iphone in /usr/local

make[1]: Entering directory `/cygdrive/c/projects/tools/home/iphone-2.0-toolchai
n/build/gcc-4.2-iphone'

/bin/sh /cygdrive/c/projects/tools/home/iphone-2.0-toolchain/src/gcc/mkinstalldirs /usr/local /usr/local

make[2]: Entering directory `/cygdrive/c/projects/tools/home/iphone-2.0-toolchain/build/gcc-4.2-iphone/fixincludes'

rm -rf /usr/local/libexec/gcc/arm-apple-darwin9/4.2.1/install-tools
/bin/sh /cygdrive/c/projects/tools/home/iphone-2.0-toolchain/src/gcc/fixincludes
/../mkinstalldirs /usr/local/libexec/gcc/arm-apple-darwin9/4.2.1/install-tools

mkdir -p -- /usr/local/libexec/gcc/arm-apple-darwin9/4.2.1/install-tools
/bin/sh /cygdrive/c/projects/tools/home/iphone-2.0-toolchain/src/gcc/fixincludes
/../mkinstalldirs /usr/local/lib/gcc/arm-apple-darwin9/4.2.1/install-tools/include
/usr/bin/install -c -m 644 /cygdrive/c/projects/tools/home/iphone-2.0-toolchain/
src/gcc/fixincludes/README-fixinc \
          /usr/local/lib/gcc/arm-apple-darwin9/4.2.1/install-tools/include/READM
E
/usr/bin/install -c fixinc.sh /usr/local/libexec/gcc/arm-apple-darwin9/4.2.1/ins
tall-tools/fixinc.sh
/usr/bin/install -c fixincl.exe \
          /usr/local/libexec/gcc/arm-apple-darwin9/4.2.1/install-tools/fixincl.e
xe
/usr/bin/install -c mkheaders /usr/local/libexec/gcc/arm-apple-darwin9/4.2.1/ins
tall-tools/mkheaders
make[2]: Leaving directory `/cygdrive/c/projects/tools/home/iphone-2.0-toolchain
/build/gcc-4.2-iphone/fixincludes'

make[2]: Entering directory `/cygdrive/c/projects/tools/home/iphone-2.0-toolchain/build/gcc-4.2-iphone/gcc'
test -d po || mkdir po
/cygdrive/c/downloads/mono/Mono-2.4/bin/msgfmt --statistics -o po/be.gmo /cygdrive/c/projects/tools/home/iphone-2.0-toolchain/src/gcc/gcc/po/be.po
c:\downloads\mono\Mono-2.4\bin\msgfmt.exe: error while opening "/cygdrive/c/projects/tools/home/iphone-2.0-toolchain/src/gcc/gcc/po/be.po" for reading: No such
file or directory
make[2]: *** [po/be.gmo] Error 1
make[2]: Leaving directory `/cygdrive/c/projects/tools/home/iphone-2.0-toolchain
/build/gcc-4.2-iphone/gcc'
make[1]: *** [install-gcc] Error 2
make[1]: Leaving directory `/cygdrive/c/projects/tools/home/iphone-2.0-toolchain
/build/gcc-4.2-iphone'
make: *** [install] Error 2

我也觉得从Mono执行msgfmt会很奇怪吗?为什么单声道或.net用于此版本?

我有一个win32 / windowsxp系统,intel双核。

“g ++(GCC)3.4.4(cygming special,gdc 0.12,使用dmd 0.125) 版权所有(C)2004 Free Software Foundation,Inc。 这是免费软件;查看复制条件的来源。没有 保证;甚至不适用于适销性或特定用途的适用性。“

1 个答案:

答案 0 :(得分:4)

从上面的代码看,您正在使用cygwin为Windows编译一些工具。

你的编译停止了,因为找不到:

/cygdrive/c/projects/tools/home/iphone-2.0-toolchain/src/gcc/libcpp/po/be.p

看起来它正在寻找libcpp的某些部分而无法找到它。您可以通过重新运行Cygwin安装程序并在执行时选择 libcpp 来解决此问题。

另外,我建议不要尝试在Windows上运行iPhone开发工具。它与Mac OS X的相同体验无法实现,如上所述,您将遇到许多挫折。

这些黑客攻击通常只适用于在非标准环境中使用黑客IDE的硬编码器。如果您无法理解上面的警告信息(这对于使用过gcc的人来说相当简单),请不要感觉不好,但您可能没有足够的技能来完成您的尝试。

我的建议:如果你不想花很多钱购买自己的Mac mini,这些工具随Mac一起提供,你就可以在没有挫败感的情况下玩得开心。想知道你的开发环境何时会破灭。此外,当某些东西无法正常工作时,您不必担心它是否是您的黑客入侵环境或代码问题。

你也无法将你的应用程序提交到iPhone AppStore,而苹果公司真的不喜欢这样做,所以如果他们发现你这样做,你将无法获得Apple和任何其他iPhone开发者的任何帮助。

祝你好运!