web-dev-qa-db-ja.com

ld:-lstdc ++。6のライブラリが見つかりません

Xcodeバージョンを10.0ベータ版に更新すると、「ld:library not found for -lstdc ++。6」エラーが発生し始めます。 Xcode 9.2で正常に動作する同じコード

また、macOSを10.13.5に更新しました

24
vks

迅速な解決策は、すべての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 /

11
Shamsher Singh

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)

12
Larme

上記のように、lstdc ++はXcode 10から削除されています。これを修正するには、

  1. ターゲットに移動-> BuildPhases->バイナリをライブラリにリンク

  2. Lstdc ++を検索して削除します。

  3. 上記の「lstdc ++」ライブラリを使用するフレームワークでエラーが発生する場合があります。 Xcodeが正常にビルドできるように、これらのフレームワークを更新するか削除する必要があります。

5
rajtharan-g
  1. C++ライブラリの構築に外部Makefileを使用している場合は、追加します

CXXFLAGS += -stdlib=libc++外部ライブラリMakefileと-stdlib=stdlibc++のインスタンスの削除

  1. そうでない場合は、上記の手順を無視して、[プロジェクト]> [ターゲット]> [ライブラリとバイナリをリンク]> に進みます。
    • 削除(-)libstdc ++。6.0.9.tbd
    • (+)libc ++。tbdを追加します
4
ir2pid

make installを実行しようとすると、これは失敗しました。代わりに、make install -stdlib=libc++を実行しました。

0
user394430