Nano Hash - криптовалюты, майнинг, программирование

Невозможно архивировать, когда библиотека включена в мою собственную настраиваемую платформу iOS

Я создал свою собственную платформу iOS, следуя этому руководству, https://code.google.com/p/ios-static-framework/, который использует шаблон статической библиотеки и агрегированную цель с пользовательским скриптом запуска для создания платформы.

Сначала работает нормально. После включения другой библиотеки в проект фреймворка возникает ошибка при архивировании или сборке для устройства. Я думаю, проблема в некоторых неправильных настройках для этой библиотеки. Но я просто не знаю, что попробовать. Я попытался установить некоторые разумные флаги других линкеров из https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/ld.1.html , но не повезло. Может кто поможет пожалуйста ;(

Какие действия воспроизведут проблему?

  1. Следуйте указаниям руководства, но измените архитектуру скрипта 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
    
  2. Добавьте в проект внешнюю библиотеку, здесь я использую libBlocksKit.a.

  3. Постройте основу, успех.
  4. В другом дочернем проекте. Включите мою встроенную структуру.
  5. Добавьте -ObjC в приложение Target > Build Settings > Other Linker Flags
  6. Архивируйте и получайте ошибку. Сборка для устройства (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 недели ответа нет.
  • Я нашел набор полезных предложений из этого ответа. Обновление: не работает
  • Я создал проект, чтобы вы могли запустить и убедиться сами здесь

  • существует ли каталог '/Users/hlung/Dropbox/- Notes/stackoverflow/RealFrameworkApp/RealFrameworkApp/External/BlocksKit', это здесь библиотека? какие разрешения? вы пользователь hlung, в противном случае у вас, вероятно, будет проблема с разрешениями. Вы строите все арки в своей библиотеке, которые вы используете в своей конечной цели? Вы отключили сборку текущей арки только для выпуска? 29.09.2013
  • Я все это проверил. 29.09.2013

Ответы:


1

Связывание со статической библиотекой внутри фреймворка может создать некоторые интересные проблемы... Похоже, вы можете связываться с BlocksKit как из вашего фреймворка, так и из ваших проектов приложений.

Вы должны ссылаться только в одном из этих мест. Попробуйте удалить libBlocksKit.a из этапа сборки Link Libraries вашего фреймворка, но оставьте его в другом проекте.

29.09.2013
  • Извините, похоже, я не могу этого сделать, потому что libBlocksKit.a виден только в Framework, но не в другом проекте. Так что это уже связано только в одном месте, в моем проекте Framework. 30.09.2013

  • 2

    Вы можете сделать так:

    1. Нажмите на свой проект (цели)
    2. Нажмите «Настройки сборки».
    3. В разделе «Пути поиска библиотеки» удалите пути

    Я надеюсь, что это может помочь вам.

    29.09.2013
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..