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。 platform/Developer/SDKs/iPhoneOS.sdk/usr/lib /
シミュレーターの場合:
cp /Applications/Xcode9.4.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/libstdc++.* /Applications/Xcode10.app/Contents/Developer/Platforms/iPhoneSimulator。 platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib /
IOSアプリを対象とする場合、この問題が発生します。リリースノートに記載されています:
廃止予定通知:
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)
ソース: XCode Beta 2のリリースノート
サイドノート:
ページにアクセスするにはログインする必要があります。
次のベータリリースでリンクが破損する可能性があります(URLが変更されます)が、開発者/ダウンロードの部分にあります
XCode 10は リリースノート で正式にリリースされていますが、それでも次のとおりです。
libstdc ++でのビルドはXcode 8で非推奨になり、iOSをターゲットとするXcode 10ではサポートされません。 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から削除されています。これを修正するには、
ターゲットに移動-> BuildPhases->バイナリをライブラリにリンク
Lstdc ++を検索して削除します。
上記の「lstdc ++」ライブラリを使用するフレームワークでエラーが発生する場合があります。 Xcodeが正常にビルドできるように、これらのフレームワークを更新するか削除する必要があります。
CXXFLAGS += -stdlib=libc++
外部ライブラリMakefileと-stdlib=stdlibc++
のインスタンスの削除
make install
を実行しようとすると、これは失敗しました。代わりに、make install -stdlib=libc++
を実行しました。