Я создал свою собственную платформу iOS, следуя этому руководству, https://code.google.com/p/ios-static-framework/, который использует шаблон статической библиотеки и агрегированную цель с пользовательским скриптом запуска для создания платформы.
Сначала работает нормально. После включения другой библиотеки в проект фреймворка возникает ошибка при архивировании или сборке для устройства. Я думаю, проблема в некоторых неправильных настройках для этой библиотеки. Но я просто не знаю, что попробовать. Я попытался установить некоторые разумные флаги других линкеров из https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/ld.1.html , но не повезло. Может кто поможет пожалуйста ;(
Какие действия воспроизведут проблему?
Следуйте указаниям руководства, но измените архитектуру скрипта Aggregate с
armv6 armv7
наarmv7 armv7s
. Вот часть совокупного целевого скрипта, которую я изменил. Все остальное то же самое.if [[ "$SF_SDK_PLATFORM" = "iphoneos" ]] then SF_OTHER_PLATFORM=iphonesimulator SF_ARCHS=i386 else SF_OTHER_PLATFORM=iphoneos SF_ARCHS="armv7 armv7s" fi
Добавьте в проект внешнюю библиотеку, здесь я использую libBlocksKit.a.
- Постройте основу, успех.
- В другом дочернем проекте. Включите мою встроенную структуру.
- Добавьте
-ObjC
в приложение Target > Build Settings > Other Linker Flags - Архивируйте и получайте ошибку. Сборка для устройства (iPhone5) тоже выдает ошибку. Но сборка для симулятора, кажется, работает.
В чем ошибка?
Эта ошибка, в основном «ld: предупреждение: каталог не найден для параметра ... ld: lto: не может объединиться в ... многократно определенный символ!».
ld: warning: directory not found for option '-L/Users/hlung/Dropbox/- Notes/stackoverflow/RealFrameworkApp/RealFrameworkApp/External/BlocksKit'
ld: lto: could not merge in /Users/hlung/Library/Developer/Xcode/DerivedData/RealFrameworkTest-evagqzwzyyolhjenkkjbvzibxppf/Build/Products/Debug-iphonesimulator/RealFrameworkTest.framework/RealFrameworkTest(NSObject+BlockObservation.o) because 'Linking globals named 'OBJC_CLASS_$_BKObserver': symbol multiply defined!', using libLTO version 'LLVM version 3.2svn, from Apple Clang 4.2 (build 425.0.28)' for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Если я архивирую свой дочерний проект только с одной архитектурой (например, armv7), он работает. Он показывает эту ошибку с архитектурами armv7 armv7s ( $(ARCHS_STANDARD_32_BIT) ).
Какую версию продукта вы используете? В какой операционной системе?
ОС Х 10.8.5, XCode 4.6.3
== Обновление 1 ==
- Опубликована проблема на странице учебника code.google.com Обновление: 2 недели ответа нет.
- Я нашел набор полезных предложений из этого ответа. Обновление: не работает
- Я создал проект, чтобы вы могли запустить и убедиться сами здесь