связывание с dylib, построенным для файла MacOSX ' / usr/lib / libSystem.B. dylib ' для архитектуры i386
недавно я переключил свой MacBook разработки с классического MacBook (32 бит) на MacBook Air (64 бит). Я пытаюсь открыть проект, который был сделан на моем старом MacBook (32 бит) под управлением XCode 4.
проект представляет собой приложение PhoneGap, сделанное в PhoneGap 1.7.0.
мой новый MacBook Air (64 бит) работает под управлением XCode 5.
Я импортировал профили разработчиков из моего старого MacBook в мой новый MacBook Air. Но когда я пытаюсь запустить его, я получаю следующая ошибка.
Я попытался изменить мою архитектуру в настройках сборки на armv7, но все равно не повезло : (
кто-нибудь знает, почему я получаю эту ошибку и как ее исправить?
спасибо
2 ответов
OK Итак, как оказалось, XCode 5 изменяет архитектуру по умолчанию на armv7, когда мое приложение не поддерживает armv7. Я запускаю Cordova 1.7.0, и эта версия не поддерживает архитектуру armv7.
исправить проблему архитектуры:
- удалены все архитектур от
Build Settings
-->Valid Architecture
- добавил
armv6
toBuild Settings
-->Valid Architecture
исправить libSystem.B.dylib
вопрос:
удалены
/usr/lib/libSystem.B.dylib
СBuild Settings
-->Linking
-->Other Linker Flags
и удалены
-weak_library
СBuild Settings
-->Linking
-->Other Linker Flags
Xcode 5 просит вас создать свои библиотеки для симулятора (1) и для iOS (2). Затем вы можете объединить (3) их в двоичный файл fat, который затем свяжете с вашим основным проектом. Я использую те же флаги, что и Xcode для создания вашего основного проекта (как видно из вашего screendump).
выраженные в общих переменных GNU toolchain я делаю:
1. Создание библиотеки для симулятора
CC=clang
IPHONEOS_DEPLOYMENT_TARGET=7.0
PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:$PATH"
CFLAGS="-arch i386 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.0.sdk -mios-simulator-version-min=7.0"
2. Здание библиотеки iOS
CC=clang
IPHONEOS_DEPLOYMENT_TARGET=7.0
PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:$PATH"
CFLAGS="-arch armv7 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk -miphoneos-version-min=7.0"
3. Слияние с fat binary
выберите .a
или .dylib
в зависимости от того, что вы используете:
lipo -create "your armv7 lib".a "your simulator lib".a -output "your lib".a
lipo -create "your armv7 lib".dylib "your simulator lib".dylib -output "your lib".dylib