2020年2月11日火曜日

[Xcode11] libstdc++をまだ使いたい

Podで引き込んだライブラリが要求するんで、libstdc++を今でも使う場面があるかと思います。
最終リリースはXcode9なので、そこから抽出する必要があります。

ビルドするための処方箋


1. ヘッダー


/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include
のc++フォルダをまるごと、Xcode11の同ディレクトリにコピー。

2. ライブラリ


/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib
の3つ
libstdc++.6.0.9.tbd (実体)
libstdc++.6.tbd (シンボリックリンク)
libstdc++.tbd (シンボリックリンク)
をXcode11の同ディレクトリにコピー。


iOS Simulatorでデバッグするための処方箋


1. ヘッダー


/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/include
のc++フォルダをまるごと、Xcode11の同ディレクトリにコピー。

2. ライブラリ


/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib
の3つ
libstdc++.6.0.9.tbd (実体)
libstdc++.6.tbd (シンボリックリンク)
libstdc++.tbd (シンボリックリンク)
をXcode11の同ディレクトリにコピー。

3. ライブラリ


/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib
の3つ
libstdc++.6.0.9.dylib (実体)
libstdc++.6.dylib (シンボリックリンク)
libstdc++.dylib (シンボリックリンク)
をXcode11の
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib
にコピー。

1 件のコメント:

  1. この方法が通用するのはXcode13.2.1が最後。今後どうしましょ。

    以下、Xcode13.3のリリースノートから抜粋
    Xcode no longer passes -stdlib=libstdc++ to Clang, because Clang no longer supports that library on Apple platforms. If your project defines the CLANG_CXX_LIBRARY build setting, remove it because it no longer does anything. (83768231)

    返信削除