Xcode 10 (iOS 12) не содержит libstdc ++ 6.0.9

Я загружаю новейший Xcode от Apple, но обнаружил, что не могу выполнить поиск в библиотеке с именем «libstdc ++ 6.0.9». не могу выполнить поиск в libstdc ++


person CoderAzreal    schedule 05.06.2018    source источник
comment
попробуйте использовать libc++ вместо libstdc++   -  person Anbu.Karthik    schedule 05.06.2018
comment
Вам нужно добавить это, не так ли? аналогичный вопрос из прошлого года ... stackoverflow.com/questions/36057291/libstdc-6-0-0-tbd-or-dylib   -  person Scriptable    schedule 05.06.2018
comment
Добавление libc++ у меня не работает, libstc++ тоже недоступен   -  person sgdesmet    schedule 05.06.2018


Ответы (14)


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 ++.

person Jeremy Huddleston Sequoia    schedule 07.06.2018

Вы можете скопировать его из старого 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/
person Antigp    schedule 06.06.2018
comment
Если Apple хочет удалить поддержку библиотеки, это решение может не работать для iTunes Connect или будущих версий iOS. - person Cœur; 06.06.2018
comment
@ Cœur, это правда, но это хорошее временное решение, если вам нужно собрать существующий проект. - person NKorotkov; 08.06.2018
comment
Запустить на симуляторе: dyld: Библиотека не загружена: /usr/lib/libstdc++.6.dylib Ссылка на: / Users / root / Library / Developer / CoreSimulator / Devices / 3D8BF0EC-E838-451D-A39D-E5723E0CD938 / data / Containers / Bundle / Application / 7168BA72-4111-44CB-92A3-20C5F5BF585B / VPDemo.app / VPDemo Причина: не найдено подходящего образа. Нашел: /usr/lib/libstdc++.6.dylib: mach-o, но не создан для симулятора iOS - person zhengwu119; 11.06.2018
comment
@ zhengwu119 здесь та же проблема. - person user1007522; 14.06.2018
comment
У меня это не работает полностью, приложение не запускается на симуляторе. Я знаю, что поддержка iOS12 была удалена, но, возможно, ее можно добавить вручную, чтобы сделать ее работоспособной ... - person silentBob; 10.08.2018
comment
У меня была такая же проблема с проектом Xamarin Visual Studio, и это решение тоже сработало для меня. Я также попытался загрузить библиотеки из другого ответа в этом же потоке (кто-то загрузил их на github), но они давали мне некоторые странные ошибки о том, что они слишком малы для архитектуры ARM. поэтому, если у вас есть эта проблема, пропустите проблему и просто загрузите xcode из Apple и скопируйте оттуда. - person cesar-moya; 09.10.2018

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 ++ (включая -lstdc ++, -lstdc ++. 6.0.9, libstdc ++. 6.0.9.tbd и libstdc ++. 6.0. 9. dylib). Зависимости проекта, такие как статические архивы, которые были созданы для libstdc ++, также необходимо будет пересобрать для libc ++. (40885260)

person Oscar Apeland    schedule 06.06.2018

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 и перестройте его.

Вот файл.

person 刘俊利    schedule 20.09.2018
comment
Я загрузил библиотеки из местоположения github, указанного в этом ответе, но я получал ошибку о том, что библиотеки слишком малы для архитектуры ARM, поэтому я загрузил XCode 9.4 напрямую с портала разработчика Apple, распаковал его и вручную скопировал библиотеки, и это сработало отлично. . Спасибо! - person cesar-moya; 09.10.2018
comment
Работал как шарм. Спасибо - person Nishant Mendiratta; 27.01.2019
comment
В некоторых случаях вам также необходимо скопировать dylib файл. Они должны быть расположены в Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib/ - person khcpietro; 26.03.2019

Взято из примечаний к выпуску Xcode 10 Beta 2 и применимо ко всем будущим версиям Xcode:

Сборка с использованием libstdc ++ устарела в Xcode 8 и не поддерживается в Xcode 10 при ориентации на iOS. Проекты C ++ теперь должны перейти на libc ++, и рекомендуется установить цель развертывания iOS 7 или новее. Помимо изменения параметра сборки стандартной библиотеки C ++, разработчики должны проверять жестко запрограммированные флаги компоновщика и целевые зависимости для удаления ссылок на libstdc ++ (включая -lstdc ++, -lstdc ++. 6.0.9, libstdc ++. 6.0.9.tbd и libstdc ++. 6.0. 9. dylib). Зависимости проекта, такие как статические архивы, которые были созданы для libstdc ++, также необходимо будет пересобрать для libc ++. (40885260)

Apple вряд ли когда-нибудь снова будет поддерживать libstdc ++.

person Cœur    schedule 20.06.2018
comment
Этот ответ помог мне исправить мою сборку. Я искал libstdc ++ bu, ища его в панели поиска или фильтра в верхней части проекта и целевых окон в Xcode. Я нашел свою ссылку на него на вкладке Target's Build Phases в разделе Link Binary With Libraries. Я удалил libstdc ++ 6.0.tbd, нажав кнопку «минус» в списке. - person aaronsti; 25.08.2018

Я столкнулся с той же проблемой после обновления до xcode 10. Я решил эту проблему, загрузив libstdc ++. 6.0.9.tbd и libstdc ++. 6.tbd с сайта https://github.com/Kila2/libstdc-.6.0.9.tbd.

затем я скопировал эти файлы в папку своего проекта. После этого я добавил эти библиотеки в Linked Frameworks и Libraries, выполнив следующие действия: Project> Target> General> Linked Frameworks and Libraries нажмите (+)> Нажмите «Add Other»> Перейдите в папку вашего проекта в «Open File» и выберите их. библиотеки и доп.

Теперь запустите проект, он будет работать отлично.

person Tahir Pasha    schedule 12.11.2018

Поскольку 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
person RamboLu    schedule 11.10.2018
comment
При проблемах симулятора с/usr/lib/libstdc++.6.dylib: mach-o, but not built for iOS simulator можно попробовать скопировать исходный файл: 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 - person RamboLu; 12.10.2018
comment
Ты спас мне жизнь. Нужен второй шаг. Спасибо большое. - person Luat Vu Dinh; 10.04.2020
comment
+1. С Xcode 10 вы можете сделать только первый шаг, но с симулятором Xcode 11 и iOS 13 вам срочно нужен второй шаг. - person Luat Vu Dinh; 10.04.2020

Для меня -l "stdc ++. 6" был добавлен во время pod install. Я нашел его в 'Pods / Target \ Support \ Files / Pods-SomeTarget / Pods-SomeTarget.debug.xcconfig'

Чтобы решить эту проблему, вы можете использовать обработчик post_install в Podfile:

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
person Sergey Teryokhin    schedule 22.10.2018

Джереми Хаддлстон. Ответ Секвойи дал мне направление для решения этой проблемы. Поэтому, прежде чем продолжить, убедитесь, что вы прочитали его ответ.

Даже после обновления библиотеки C ++ в вашем проекте вы можете столкнуться с ошибкой связывания, когда Xcode не сможет связать ваш проект с этой libstdc ++ lib.

Решение - если в структуру вашего проекта включен libstdc ++, он мог стать красным, потому что Xcode не смог найти для него ссылку. Если вы удалите эту запись из структуры проекта и вместо этого добавите новую библиотеку (libc ++), все готово.

person Anup    schedule 26.06.2018

Скопируйте его из старого Xcode (9.4), он будет работать для физических устройств iOS. Для проблем Simulator с Did find: /usr/lib/libstdc++.6.dylib: mach-o, but not built for iOS simulator. Похоже, Apple удалила поддержку совместимости для симулятора. Просто скачайте симулятор iOS 11.4, и его можно будет запускать на нем.

person Fan    schedule 18.09.2018

Для симулятора просто удалите libstdc ++. 6.0.9.tbd из связанных платформ и библиотек.

person tounaobun    schedule 26.09.2018

Вам следует удалить libstdc ++ из других флагов компоновщика в вашем проекте xcode

Проверьте это:  введите описание изображения здесь

person iosMentalist    schedule 01.11.2018

Мне удалось исправить проблему сборки, скопировав необходимые файлы из 9.4 в 10.1, как библиотеки платформы, так и среду выполнения. Но это решает только случаи с симулятором. Мое приложение все еще зависает при запуске (заставка) при запуске на физическом устройстве.

person Chen Wang    schedule 17.12.2018

Это сработает. Не копируйте файлы .dylib из / usr / lib в simruntime.

Список файлов и путей для копирования из Xcode 9.4.1 в Xcode 10.2.1

А) Скопируйте файл: libstdc ++. 6.0.9.tbd и libstdc ++. 6.tbd и libstdc ++. Tbd

из> Xcode9_41 / Xcode9_41.app / Contents / Developer / Platforms / iPhoneSimulator.platform / Developer / SDKs / iPhoneSimulator.sdk / usr / lib

в> /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib

Б) Скопируйте файлы: libstdc ++. 6.0.9.dylib и libstdc ++. 6.dylib и libstdc ++. Dylib

из> Xcode9_41 / Xcode9_41.app / Contents / Developer / Platforms / iPhoneOS.platform / Developer / Library / CoreSimulator / Profiles / Runtimes / iOS.simruntime / Contents / Resources / RuntimeRoot / usr / lib

в> /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib

person Shane D    schedule 28.06.2019