Кросс-компиляция для iPhone на Mac? - PullRequest
3 голосов
/ 29 августа 2011

Как бы я настроил все для кросс-компиляции от моего MacBook Pro OSX 10.7 до моего взломанного iPod touch 4-го поколения. Я в основном стремлюсь иметь возможность портировать библиотеки с открытым исходным кодом на iphone. Кажется, я не могу найти хорошие / последние статьи о кросс-компиляции для iOS 4.

Ответы [ 2 ]

3 голосов
/ 12 марта 2012

После некоторой попытки я обнаружил, что можно использовать ./configure и заставить его собрать для arm-apple-darwin11. Вы должны использовать эти флаги непосредственно после ./configure --some-flags:

CPP="cpp" CXXCPP="cpp" 
CXX="/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-apple-darwin10-llvm-g++-4.2" CXXFLAGS="-O -arch armv6 -arch armv7 -isysroot $SDK_ROOT/SDKs/iPhoneOS5.0.sdk" 
CC="/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-apple-darwin10-llvm-gcc-4.2" CFLAGS="-O -arch armv6 -arch armv7 -isysroot $SDK_ROOT/SDKs/iPhoneOS5.0.sdk" 
AR="/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ar" 
AS="/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/as" 
LD="/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ld"
LDFLAGS="-lstdc++ -arch armv6 -arch armv7 -isysroot $SDK_ROOT/SDKs/iPhoneOS5.0.sdk"
LIBTOOL="/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/libtool"
STRIP="/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/strip" 
RANLIB="/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ranlib"

CPP и CXXCPP - обязательный препроцессор (по умолчанию); CC и CXX - это путь к компилятору c и c ++ для arm, который поставляется с Xcode, другие - флаги, которые получает компилятор, или макросы, которые определяют путь к наиболее распространенным инструментам, используемым при компиляции. Я не могу допустить, чтобы все работало, но это хорошая идея того, что вы должны делать. Я бы предложил добавить к ./configure эти флаги:

--prefix=/tmp/build --host=arm-apple-darwin11

они помогают создать make-файл, который будет отправлять библиотеки и программы в папку под /tmp/build.

2 голосов
/ 11 февраля 2012

И я тоже. Весь набор инструментов, который я пробовал, заканчивался тем, что не работал или создавал двоичные файлы x86_64, которые не будут работать на iOS.В настоящее время я пытаюсь собрать apr непосредственно на своем iPad, так как я установил из Cydia все необходимые вещи, но я застрял в kqueue.c, который не компилируется должным образом.Я уже портировал lua и некоторые другие программы, поэтому могу сказать, что обычно работает таким образом.Основная причина построения на собственной платформе, а не кросс-компиляции, заключается в том, что некоторые программы полагаются на другие программы (например, apr-util на apr), поэтому некоторые из них должны быть запущены.Тем не менее, невозможно работать на Intel (по крайней мере, без эмуляции, и iPhone Simulator использует двоичные файлы i386).

Любой, кто заинтересован в использовании / сборке инструментов UNIX на iOS, должен помнить следующее:

  • Вы можете найти то, что хотели, но не сказано, что он будет работать должным образом (это предназначено специально для разработчиков. Пример: apr поставляется в Cydia, но это не полный пакет, поэтомубесполезно для сборки apr-util).
  • Вы должны использовать взломанное устройство.Это может стать проблемой, если вы сломаете ОС и вам понадобится восстановить.Обязательно сохраните SHSH, чтобы иметь возможность восстановить джейлбрейк iOS.
  • Если вы не найдете то, что искали, все будет довольно грязно.Большинство программ, хотя предполагается, что они работают в общей системе UNIX, могут иметь проблемы в iOS, которая близка к OS X по структуре и способу работы, но имеет различия, особенно в разделах, связанных с сетью.Кроме того, вам, вероятно, придется (фальшиво) подписывать код любого созданного вами программного обеспечения.
  • Даже программное обеспечение без проблем со сборкой может преподнести нежелательные сюрпризы: я успешно собрал apache2 для iOS, но когда я запустился, я застрял с SIGSYSбез объясненийApple), это может содержать объяснение, поскольку вам не нужен Mac для загрузки XCode, в то время как Mac стоит обычно больше, чем разработчики готовы потратить.Это означает, что не так много людей делают то же самое, что и вы, несмотря на то, что аппаратное обеспечение Mac Boom недавно было.Наборы инструментов были более или менее успешно созданы для ОС на базе Linux, таких как Ubuntu.Вы всегда можете попробовать использовать виртуальную машину.
...