19
Май

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, поскольку именно этот язык используется для разработки. :)

Комментирование недоступно.
Максим Крентовский
системный архитектор
E-mail / GTalk: mkrentovskiy@gmail.com
Skype: mkrentovskiy