The now non-existent iPhone developer NDA seems to have been holding back a flood of useful and diverse information. IBM has contributed to this information deluge with their release of a tutorial (registration required), authored by PJ Cabrera, on how to use the Eclipse C Development Toolkit (CDT) to program native applications for the Apple iPhone with open source tools.
Unfortunately, any application you create will not be headed for the App Store any time soon since it requires you to jailbreak your device by using any one of the more popular utilities (e.g. QuickPwn, XPwn, Pwnage, and WinPwn). While many iPhone users have used these tools to “free” their devices, I am still not a proponent of doing this since the practice is not supported by Apple in any way, and their use may void the device’s warranty if Apple has evidence of third-party software modification. You also open yourself up to device corruption and security problems due to the fact that jailbroken applications have free reign over every bit of data in your phone. If you do go this route, your application will reach the widest audience via Cydia.
IBM continues the tutorial by listing what you must have installed to begin development – cygwin for Windows and standard/core development libraries/packages you probably already have installed if you are a linux/BSD user. The author then covers how to download and access the data in the iPhone firmware image files in order to build the “toolchain” which will form the foundation of your development environment.
The article goes on to cover the installation of the Eclipse IDE and the configuration required to support C/C++ development for the iPhone using the toolchain. They start showing actual code with the most basic of all introductory applications, “Hello, World!”. Finally, you get an idea of how to work with the Cocoa Touch libraries with a full-fledged Objective-C code bundle that extends the “Hello, World!” example from the command-line to the iPhone graphical user interface.
The article/tutorial is a good read just for the “Resources” section (tons of good URLs for both iPhone development and coding in general), but I still strongly discourage folks from jailbreaking their devices. I realize Apple left Windows/Linux developers out in the cold, but there are other ways to protest such decisions besides doing something which could render your expensive device utterly useless.
If you are a Windows/Linux developer and have started down this path via these techniques, drop a note in the comments with your experiences.