web-dev-qa-db-ja.com

libc ++またはlibstdc ++を使用する必要がありますか?

C/c ++を使用して、osxとlinuxの両方のコマンドラインインターフェイス実行可能ファイルを開発しています。プロジェクトはopencvにリンクします。 libc ++またはlibstdc ++を使用する必要がありますか?

78
Loozie

各OSにネイティブライブラリ、つまりGNU/Linuxではlibstdc ++、Mac OS Xではlibc ++を使用します。

libc ++はGNU/Linuxでは完全に完全ではなく、libstdc ++がより完全な場合に使用することには実質的な利点はありません。また、C++で記述された他のライブラリにリンクする場合は、ほぼ確実にlibstdc ++でビルドされているため、それらを使用するためにもリンクする必要があります。

詳細情報 こちら さまざまなプラットフォームでのlibc ++の完全性について。

75
Jonathan Wakely

次の理由により、主要なLinuxディストリビューションはLLVM libc ++を提供しません。

  1. AppleおよびFreeBSDとは異なり、GPL + 3は問題ではないため、ここで別のスタックを実装する必要はありません。
  2. Linuxコンポーネントは、長年にわたってGNU libstd ++を中心に開発されてきました。一部のコンポーネントは、他のものに基づいて構築されていません。
  3. Libc ++は新機能に優れていますが、レガシーコードにはいくつかの問題があります。

最終的にlibc ++がディストリビューションの一部になった場合、それはオプションのコンポーネントになります。それに対してリンクするには、おそらく追加のオプションが必要になります。

ジョナサンが言ったように、デフォルトで含まれているツールを使用する必要があります。 ClangはGCCの代替として構成されているため、Linuxで使用しても安全です。そのため、その点で2つのコンパイラを心配する必要はありません。また、2つのプラットフォームをターゲットにしているため、cmakeを確認する必要があります。

29
Mario Vazquez