web-dev-qa-db-ja.com

Xcode 10(iOS 12)にはlibstdc ++ 6.0.9が含まれていません

Appleから最新のXcodeをダウンロードしましたが、「libstdc ++ 6.0.9」という名前のライブラリを検索できないことがわかりました。 cant search libstdc++

44
CoderAzreal

libstdc ++は5年前に廃止されました。 Appleの最近のプラットフォーム(tvOSおよびwatchOS)はサポートしていません。

IOS 12.0シミュレータランタイムからサポートは削除されましたが、出荷アプリとのバイナリ互換性のためにiOS 12.0(デバイス)ランタイムに残ります。

CLANG_CXX_LIBRARYビルド設定(「C++標準ライブラリ」)をlibc ++に設定して、libstdc ++ではなくlibc ++を使用するようにプロジェクトを更新する必要があります。

Libstdc ++。tbdに依存する静的ライブラリがある場合は、Xcode 9.4のSDK(およびiOSシミュレーターランタイムのlibstdc ++。*。dylib)からファイルをコピーすることで回避できますが、それは長期的ではありません解決。これらのライブラリのプロバイダーに連絡し、libc ++を使用してビルドされたバージョンを要求する必要があります。

古い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/
21
Antigp

libstdc++はiOS 12で削除されました。

TwitterのAppleエンジニアよりも良い情報源があればいいのですが、それだけです。

@ jeremyhuPSA:iOS 12.0 SDKからlibstdc ++がなくなりました(バイナリのランタイムに存在します互換性)。macOSでも同様に日数が付けられています。まだlibc ++に移行していない場合は移行してください。#WWDC2018 #cplusplus

編集:これはより良いソース、Xcode 10パッチノートです

Libstdc ++を使用したビルドは、Xcode 8で非推奨になり、iOSを対象とするXcode 10ではサポートされません。 C++プロジェクトはlibc ++に移行する必要があり、iOS 7以降の展開ターゲットを設定することをお勧めします。 C++標準ライブラリのビルド設定を変更する以外に、開発者はハードコードされたリンカーフラグとターゲットの依存関係を監査して、libstdc ++(-lstdc ++、-lstdc ++。6.0.9、libstdc ++。6.0.9.tbd、およびlibstdc ++。6.0を含む)への参照を削除する必要があります。 9.dylib)。 libstdc ++に対して構築された静的アーカイブなどのプロジェクトの依存関係も、libc ++に対して再構築する必要があります。 (40885260)

17
Oscar Apeland

Xcode 10は、libが組み込まれたlibstdc ++ライブラリをキャンセルするため、手動でファイルをlibにコピーする必要があります。

ファイルをコピーします:(libstdc ++。6.0.9.tbd)and(libstdc ++。6.tbd)to:

/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を削除して再構築します。

ここ はファイルです。

11
刘俊利

Xcode 10 Beta 2リリースノート から取得し、Xcodeのすべての将来のバージョンに適用可能:

Libstdc ++を使用したビルドは、Xcode 8で非推奨になり、iOSを対象とするXcode 10ではサポートされません。 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 ++を再びサポートすることはほとんどありません。

9
Cœur

Xcode 10に更新した後、同じ問題に直面しました。libstdc++。6.0.9.tbdとlibstdc ++。6.tbdを https://github.com/Kila2/libstdcからダウンロードすることで、この問題を解決しました。 -.6.0.9.tbd

次に、これらのファイルをプロジェクトフォルダーにコピーしました。その後、次の手順に従って、リンクされたフレームワークとライブラリにこれらのライブラリを追加しました:プロジェクト>ターゲット>一般>リンクされたフレームワークとライブラリクリック(+)>「その他を追加」>「ファイルを開く」のプロジェクトフォルダーにナビゲートし、これらを選択しますライブラリと追加。

ここでプロジェクトを実行します。完全に実行されます。

4
Tahir Pasha

AppleはXcode 10.0でlibstdc ++を削除するため、問題を解決したい場合は、ファイルを手動で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
4
RamboLu

私にとって-l "stdc ++。6"はpod installの間に追加されました

この問題を解決するには、Podfileで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
2

Jeremy Huddleston Sequoiaの答えは、この問題を解決する方向性を与えてくれました。ですから、先に進む前に、彼の答えを読んだことを確認してください。

プロジェクトのC++ライブラリを更新した後でも、Xcodeがこのlibstdc ++ libとプロジェクトをリンクできないリンクエラーが発生する場合があります。

解決策は、プロジェクト構造にlibstdc ++が含まれている場合、Xcodeがその参照を見つけることができなかったために赤くなった可能性があります。そのエントリをプロジェクト構造から削除し、代わりに新しいlib(libc ++)を追加したら、準備はいいです。

1
Anup

シミュレータの場合、libstdc ++。6.0.9.tbdをLinked Frameworks and Librariesから削除するだけです。

0
tounaobun

古いXcode(9.4)からコピーすると、物理iOSデバイスで機能します。 Did find: /usr/lib/libstdc++.6.dylib: mach-o, but not built for iOS simulatorのシミュレーターの問題。 Appleはシミュレータの互換性サポートを削除したようです。 iOS 11.4シミュレーターをダウンロードするだけで実行できます。

0
Fan

Xcodeプロジェクトの他のリンカーフラグからlibstdc ++を削除する必要があります

これをチェックして : - enter image description here

0
iosMentalist

これは動作します。 .dylibファイルを/ usr/libからsimruntimeにコピーしないでください。

Xcode 9.4.1からXcode 10.2.1にコピーするファイルとパスのリスト

A)ファイルをコピーします:libstdc ++。6.0.9.tbdおよびlibstdc ++。6.tbdおよびlibstdc ++。tbd

from> 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

B)ファイルをコピーします:libstdc ++。6.0.9.dylibおよびlibstdc ++。6.dylibおよびlibstdc ++。dylib

from> 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

0
Shane D

必要なファイルを9.4から10.1にプラットフォームライブラリとランタイムの両方をコピーすることで、ビルドの問題を修正できました。ただし、シミュレータで問題を解決するだけです。私のアプリは、物理デバイスで実行しているとき、起動(スプラッシュスクリーン)のままです。

0
Chen Wang