Mac で libc++ と stdlibc++ の間の ABI の不一致を処理する良い方法は (もしあれば)?
問題: 多くの c++11 機能には、C++ 標準ライブラリの新しい libc++ 実装が必要です。しかし、libc++ は古い libstdc++ と ABI 互換ではありませんが、現在、ほとんどのソフトウェアは通常、後者に対してリンクしています。たとえば、システム コンパイラはまだ stdlibc++ を使用しています。これは、macports と共にインストールされたすべてのライブラリが、string などの std クラスに対して異なる ABI を持ち、c++11 を多用するプロジェクトとはリンクできないことを意味します。
私の現在の解決策のハック: 2 つのバージョンのライブラリを保持し、これが一般的に問題 (boost、opencv など) を引き起こし、適切なものにリンクします。
本当に libc++ を使用したい場合は、stdlibc++ を使用してシステムからすべてを削除し、macports (または他の場所) からのものはすべて libc++ とのみリンクするようにすることをお勧めします。この作業がいかに困難であるかがわかります。
私たちが住んでいるこの「stdlib-limboの間」に関連する良い方法を考え出した人はいますか? :)
編集:暗黙のフォローアップの質問をより明確にしています: Apple は libc++ と libstdc++ の両方をシステムに同梱しています。根本的な問題を攻撃し、libc++ のみに切り替えようとするとします。システムに現在インストールされているライブラリの 100% (システムに同梱されているライブラリ、ほとんどが macports 経由、いくつかは手動コンパイル経由) が libstdc++ にリンクされている場合 (存在する場合)、libstdc++ から libc++ に切り替える推奨される方法は何ですか? )? これを実行して生き残った人はいますか?