Search code examples
iphoneios6zshcydiatheos

How to compile zsh on/for an iPhone?


Background

I recently changed from bash to zsh as my default shell and have quickly gotten used to the awesomeness that's added by associated tools (prezto, zaw and zsh-dwim).

I wanted to have a similar setup on iPhone as well. However, only zsh v.4.3.10 is available from the default repos and that's not supported by prezto:

enter image description here

Would you know how I should go about compiling zsh from source for the iPhone? I attempted to use Theos to build something on my Win7 box, but am greeted with the following errors after doing the make package install:

/home/blah/projects/ashrocks/theos/makefiles/targets/Cygwin/iphone.mk:38: Deploying to iOS 3.0 while building for 6.0 will generate armv7-only binaries.
Bootstrapping CydiaSubstrate...
Compiling iPhoneOS CydiaSubstrate stub... default target? failed, what?
cp: cannot stat `_out/*': No such file or directory
cp: cannot stat `libsubstrate.dylib': No such file or directory
Generating substrate.h header...
Making all for tweak ashrocks...
Preprocessing Tweak.xm...
Compiling Tweak.xm...
/bin/sh: theos/toolchain/windows/iphone/bin/armv7-apple-darwin11-clang++: No such file or directory
/home/blah/projects/ashrocks/theos/makefiles/instance/rules.mk:144: recipe for target 'obj/Tweak.xm.666c9a3c.o' failed
make[2]: *** [obj/Tweak.xm.666c9a3c.o] Error 127
/home/blah/projects/ashrocks/theos/makefiles/instance/library.mk:19: recipe for target 'internal-library-all_' failed
make[1]: *** [internal-library-all_] Error 2
/home/blah/projects/ashrocks/theos/makefiles/master/rules.mk:54: recipe for target 'ashrocks.all.tweak.variables' failed
make: *** [ashrocks.all.tweak.variables] Error 2

Would you know how the command line tools availabe in Cydia were compiled ?


Solution

  • It's probably because you don't have the standard libraries compiled for the iPhone on your computer. Try setting up gcc on your iPhone by following these instructions. I have done this and have successfully compile various pieces of software.