Собираем комплект разработчика для iPhone
iPhone — продукт хороший. После того, как умельцы приложили к нему свои руки и сделали аппарат повсеместно доступным, другие начали думать на предмет создания приложений. Количество уже вышедших программ велико, а будет еще больше.
Итак, мы хотим писать программы под iPhone. Для этого нам нужен комплект разработчика, а именно — кросс-компилятор (мы же собираем под ARM9-архитектуру) и набор библиотек. С первым — просто берем The LLVM Compiler Infrastructure, принцип которого состоит в следующем — исходный код предварительно собирается в промежуточный байт-код, который затем преобразуется в код целевой платформы.
Делаем
1 2 3 4 5 6 7 | $ svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm-svn -r 42498 $ pushd llvm-svn $ ./configure --enable-optimized $ make ENABLE_OPTIMIZED=1 $ sudo make install $ LLVMOBJDIR=`pwd` $ popd |
Далее, добавляем берем необходимое из репозитория проекта iphone-dev
1 2 | $ svn checkout http://iphone-dev.googlecode.com/svn/trunk/ iphone-dev $ pushd iphone-dev |
…и собираем odcctools
1 2 3 4 5 6 | $ mkdir -p build/odcctools $ pushd build/odcctools $ ../../odcctools/configure --target=arm-apple-darwin --disable-ld64 $ make $ sudo make install $ popd |
Теперь нам надо получить образ файловой системы нашего iPhone. Для этого воспользуемся scp. Тут лишь одна хитрость — пока идет копирование, нельзя давать телефону уснуть. Поэтому в этот момент лучше включить какую-нибудь сетевую программу («Погоду» или «Биржевую сводку»).
1 | $ HEAVENLY=/usr/local/share/iphone-filesystem |
Затем осталось получить заголовочные файлы. Делается это просто — либо с сайта Apple качается диск, разбирается на запчасти и выдергиваются заголовочные файлы Mac OS X 10.4 Universal SDK (да-да, внутри iPhone именно оно), либо уже готовые заголовки ищутся в сети.
В случае, если мы потрошим диск с SDK, надо сделать:
1 2 3 4 | $ pushd include $ ./configure --with-macosx-sdk=/Developer/SDKs/MacOSX10.4u.sdk $ sudo bash install-headers.sh $ popd |
Собираем csu (внутри которого crt1.o, dylib1.o, и bundle1.o)
1 2 3 4 5 | $ mkdir -p build/csu $ pushd build/csu $ ../../csu/configure --host=arm-apple-darwin $ sudo make install $ popd |
и кросс-компиллятор
1 2 3 4 5 6 7 8 9 10 | $ mkdir -p build/llvm-gcc-4.0-iphone $ pushd build/llvm-gcc-4.0-iphone $ ../../llvm-gcc-4.0-iphone/configure --enable-llvm=`llvm-config --obj-root` \ --enable-languages=c,c++,objc,obj-c++ --target=arm-apple-darwin --enable-sjlj-exceptions \ --with-heavenly=$HEAVENLY --with-as=/usr/local/bin/arm-apple-darwin-as \ --with-ld=/usr/local/bin/arm-apple-darwin-ld --enable-wchar_t=no $ make LLVM_VERSION_INFO=2.0-svn-iphone-dev-0.3-svn $ sudo make install $ popd $ popd |
Все, можно смело идти искать руководство по Objective-C, поскольку именно этот язык используется для разработки.

