После обновления бета-версии Xcode до 10.0 начнется ошибка «ld: library not found for -lstdc ++. 6». тот же код работает нормально в Xcode 9.2
Также обновлен macOS до 10.13.5
Быстрое решение — скопировать весь файл libstdc ++. * Из старого Xcode (9.4) в новый Xcode (10.x)
Для устройства:
cp /Applications/Xcode9.4.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/libstdc++.* /Applications/Xcode10.app/Contents/Developer/Platforms/iPhoneOS. платформа / Разработчик / SDKs / iPhoneOS.sdk / USR / Библиотека /
Для симулятора:
cp /Applications/Xcode9.4.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/libstdc++.* /Applications/Xcode10.app/Contents/Developer/Platforms/iPhone. платформа / Разработчик / SDKs / iPhoneSimulator.sdk / USR / Библиотека /
Эта проблема возникнет при настройке приложения для iOS. Это указано в примечании к выпуску:
Уведомления об устаревании:
Сборка с 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)
Источник: Замечания к выпуску XCode Beta 2
Примечание:
Вы должны войти, чтобы получить доступ к странице.
Ссылка может выйти из строя в следующей бета-версии (изменение URL-адресов), но это в части Разработчики / Загрузить
XCode 10 официально выпущен с его Release Note, это все еще как так:
Сборка с libstdc ++ устарела с Xcode 8 и не является
поддерживается в Xcode 10 при ориентации на iOS. C ++ проекты должны сейчас
перейти на libc ++ и рекомендуется установить цель развертывания
macOS 10.9 или более поздняя версия или iOS 7 или более поздняя версия. Помимо изменения C ++
Стандартные настройки сборки библиотеки, разработчики должны проводить аудит жестко
флаги компоновщика и целевые зависимости для удаления ссылок на libstdc ++
(включая -lstdc ++, -lstdc ++. 6.0.9, libstdc ++. 6.0.9.tbd и
libstdc ++. 6.0.9.dylib). Зависимости проекта, такие как статические архивы
которые были построены на libstdc ++, также должны быть перестроены на
Libc ++. (40885260)
Как сказано выше, lstdc ++ удален из Xcode 10. Чтобы это исправить,
Перейдите в Target -> BuildPhases -> Link Binary With Libraries
Найдите lstdc ++ и удалите его.
Теперь вы можете получить ошибку в некотором фреймворке, который использует вышеупомянутую библиотеку «lstdc ++». Теперь вам нужно либо обновить эти рамки, либо удалить их, чтобы Xcode мог успешно их собрать.
CXXFLAGS += -stdlib=libc++
Makefile вашей внешней библиотеки и удаленные экземпляры -stdlib=stdlibc++
Просто зайдите, чтобы создать настройки, связать двоичные файлы с библиотеками и там удалить это. Это решило мою проблему.