105

我正在使用 c/c++ 为 osx 和 linux 开发命令行界面可执行文件。该项目将链接到opencv。我应该使用 libc++ 还是 libstdc++?

4

2 回答 2

103

我会为每个操作系统使用本机库,即 GNU/Linux 上的 libstdc++ 和 Mac OS X 上的 libc++。

libc++ 在 GNU/Linux 上不是 100% 完整的,当 libstdc++ 更完整时使用它并没有真正的优势。此外,如果你想链接到任何其他用 C++ 编写的库,它们几乎肯定是用 libstdc++ 构建的,所以你也需要链接到它才能使用它们。

更多关于 libc++ 在各种平台上的完整性的信息。

于 2013-05-28T09:21:49.177 回答
32

主要的 Linux 发行版不提供 LLVM libc++,因为:

  1. 与 Apple 和 FreeBSD 不同,GPL+3 不是问题,因此无需在这里实现另一个堆栈。
  2. Linux 组件已经围绕 GNU libstd++ 开发了很长时间。其中一些不建立在其他任何东西上。
  3. 虽然 libc++ 在新功能方面很强大,但它在遗留代码方面存在一些问题。

如果最终 libc++ 成为发行版的一部分,它将作为可选组件。链接它可能需要额外的选项。

就像乔纳森说的,你应该使用默认包含的任何工具。Clang 在 Linux 中使用是安全的,因为它被配置为 GCC 替代品,所以在这方面你不必担心 2 个编译器。此外,由于您针对两个平台,您应该看看 cmake。

于 2014-01-05T18:38:07.753 回答