Xcode 10 (iOS 12) не содержит libstdС++ 6.0.9
Я загружаю новейший Xcode из Apple, но я обнаружил, что не могу выполнить поиск в библиотеке с именем "libstdС++ 6.0.9".
Ответы
Ответ 1
libstdc++ устарела 5 лет назад. Apple более поздние платформы (tvOS и watchOS) не поддерживают его.
Поддержка была удалена из среды выполнения iOS 12.0 Simulator, но она остается в среде выполнения iOS 12.0 (устройство) для двоичной совместимости с приложениями для доставки.
Вы должны обновить свой проект, чтобы использовать libc++, а не libstdc++, установив параметр сборки CLANG_CXX_LIBRARY ("C++ стандартная библиотека") на libc++.
Если у вас есть какие-либо статические библиотеки, зависящие от libstdc++.tbd, вы можете обходить это до сих пор, скопировав файл из SDK в Xcode 9.4 (и libstdc++. *. Dylib в среде выполнения iOS-симулятора), но это не долгосрочное решение. Вам следует связаться с поставщиком этих библиотек и запросить версии, созданные с помощью libc++.
Ответ 2
Вы можете скопировать его из старого Xcode (9.4). Он должен работать.
cp /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/libstdc++.* /Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/
cp /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/libstdc++.* /Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/
Ответ 3
libstdc++
удаляется в iOS 12.
Хотелось бы, чтобы в Твиттере был лучший источник, чем инженер Apple, но это все, что у меня есть.
@jeremyhu PSA: libstdc++ отсутствует в iOS 12.0 SDK (он присутствует во время выполнения для двоичной совместимости). Это дни нумеруются и на macOS. Перейдите на libc++, если вы еще этого не сделали. # WWDC2018 #cplusplus
Изменение: Здесь лучший источник, заметки патча Xcode 10
Сборка с libstdc++ устарела с Xcode 8 и не поддерживается в Xcode 10 при нацеливании на iOS. C++ проекты теперь должны перейти на libc++, и рекомендуется установить цель развертывания iOS 7 или более поздней версии. Помимо изменения настройки сборки стандартной библиотеки C++, разработчики должны проверять жестко заданные флаги компоновщика и целевые зависимости, чтобы удалить ссылки на libstdc++ (включая -lstd C++, -lstd C++.6.0.9, libstdc++.6.0.9.tbd и libstdc++.6.0.9.dylib). Зависимости проекта, такие как статические архивы, созданные на основе libstdc++, также необходимо будет восстановить на основе libc++. (40885260)
Ответ 4
Xcode 10 отменяет библиотеку libstdc++ со встроенной библиотекой, поэтому мы должны вручную скопировать файл в библиотеку.
скопируйте файл: (libstdc++.6.0.9.tbd) и (libstdc++.6.tbd) в:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib
а также
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib
(Обратите внимание на различие "iPhoneOS" и "iPhoneSimulator")
очистите xcode и восстановите его.
Вот файл.
Ответ 5
Взято из примечаний к выпуску Xcode 10 Beta 2 и применимо ко всем будущим версиям Xcode:
Создание с помощью libstdc++ устарело с помощью Xcode 8 и не поддерживается в Xcode 10 при настройке iOS. C++ проекты должны теперь перейти на lib C++, и рекомендуется установить цель развертывания iOS 7 или более поздней. Помимо изменения настройки стандартной библиотеки C++, разработчики должны проверять жестко привязанные фреймы компоновщика и целевые зависимости для удаления ссылок на libstdc++ (включая -lstd C++, -lstd C++.6.0.9, libstdc++.6.0.9.tbd и libstdc++.6.0.9.dylib). Зависимости проектов, такие как статические архивы, которые были созданы против libstdc++, также должны быть перестроены против lib C++. (40885260)
Apple вряд ли когда-либо поддержит libstdc++ снова.
Ответ 6
Поскольку apple удаляет libstdc++ в Xcode 10.0, поэтому, если вы хотите решить проблему, вы можете попробовать вручную скопировать файл в lib.
1. iPhoneOS
и iPhoneSimulator
скопируйте файл: libstdc++.6.0.9.tbd
и libstdc++.6.tbd
и libstdc++.tbd
в:
-
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/
-
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/
2. Файл iOS.simruntime
скопируйте файл: libstdc++.6.0.9.dylib
и libstdc++.6.dylib
и libstdc++.dylib
:
- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib
Ответ 7
Я столкнулся с той же проблемой после обновления до xcode 10. Я решил эту проблему, загрузив libstdc++.6.0.9.tbd и libstdc++.6.tbd с https://github.com/Kila2/[ CN12].6.0.9.tbd.
Затем я скопировал эти файлы в папку моего проекта. После этого я добавил эти библиотеки в связанные фреймворки и библиотеки, выполнив следующие действия: "Проект"> "Цель"> "Основные"> "Связанные фреймворки и библиотеки", нажмите (+)> нажмите "Добавить другие"> "Перейти к папке проекта в" Открыть файл "и выберите эти библиотеки и доп.
Теперь запустите проект, он будет работать отлично..
Ответ 8
Для меня -l "stdc++.6" был добавлен во время pod install
Я нашел его в разделе "Pods/Target\Support\Files/Pods-SomeTarget/Pods-SomeTarget.debug.xcconfig"
Чтобы решить эту проблему, вы можете использовать обработчик post_install в подпикселе:
post_install do |installer|
installer.pods_project.targets.each do |target|
if target.name == "Pods-SomeTarget"
puts "Updating #{target.name} OTHER_LDFLAGS"
target.build_configurations.each do |config|
xcconfig_path = config.base_configuration_reference.real_path
xcconfig = File.read(xcconfig_path)
new_xcconfig = xcconfig.gsub('-l"stdc++.6" ', '')
File.open(xcconfig_path, "w") { |file| file << new_xcconfig }
end
end
end
end
Ответ 9
Ответ Джереми Хаддлстон Секвойя дал мне направление для решения этой проблемы. Поэтому, прежде чем идти вперед, убедитесь, что вы прочли его ответ.
Даже после обновления библиотеки C++ в вашем проекте может возникнуть ошибка связи, где Xcode не сможет связать ваш проект с этим libstd C++ lib.
Решение - если в вашей структуре проекта включен libstd C++, он мог бы стать красным, потому что Xcode не смог найти ссылку для него. Если вы удалите эту запись из структуры проекта и добавите новую lib (lib C++), вам хорошо идти.
Ответ 10
Скопировать его со старого Xcode (9.4) будет работать для физических устройств iOS. Для проблем с Simulator с помощью Did find: /usr/lib/libstdc++.6.dylib: mach-o, but not built for iOS simulator
. Похоже на поддержку совместимости с яблоками для симулятора. Просто загрузите iOS 11.4 симулятор, и он может быть запущен на нем.
Ответ 11
Для симулятора просто удалите libstdc++.6.0.9.tbd из связанных структур и библиотек.
Ответ 12
Вы должны удалить libstdc++ из других флагов компоновщика в вашем проекте xcode
Проверьте это:
Ответ 13
Мне удалось исправить проблему сборки, скопировав необходимые файлы с 9.4 до 10.1, как библиотеки платформы, так и среды выполнения. Но это решает только случаи с симулятором. Мое приложение по-прежнему зависает при запуске (заставка) при работе на физическом устройстве.
Ответ 14
Это будет работать Не копируйте файлы .dylib из /usr/lib в simruntime.
Список файлов и путей для копирования из Xcode 9.4.1 в Xcode 10.2.1
A) Скопируйте файл: libstdc++.6.0.9.tbd и libstdc++.6.tbd и libstdc++.tbd
от> Xcode9_41/Xcode9_41.app/Содержание/Разработчик/Платформы/iPhoneSimulator.platform/Разработчик /SDKs/iPhoneSimulator.sdk/usr/lib
to>/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib
B) Скопируйте файл: libstdc++.6.0.9.dylib и libstdc++.6.dylib и libstdc++.dylib
from> Xcode9_41/Xcode9_41.app/Содержание/Разработчик/Платформы/iPhoneOS.platform/Разработчик /Library/CoreSimulator/Профили/Среды выполнения /iOS.simruntime/Содержание/Ресурсы/RuntimeRoot/usr/lib
to>/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib