我应该使用libc ++还是libstdc ++?

时间:2013-02-20 04:42:32

标签: linux macos opencv libstdc++ libc++

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

3 个答案:

答案 0 :(得分:69)

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

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

有关各种平台上libc ++完整性的更多信息here

答案 1 :(得分:28)

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

  1. 与Apple和FreeBSD不同,GPL + 3不是问题,因此不需要 在这里实现另一个堆栈
  2. Linux组件已经围绕GNU libstd ++开发了很长时间。他们中有一些 不要以其他任何东西为基础。
  3. 虽然libc ++在新功能方面很强大,但它在遗留代码方面存在一些问题。
  4. 如果最终libc ++成为发行版的一部分,它将作为可选组件。链接它可能需要额外的选项。

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

答案 2 :(得分:-2)

据说libc ++在模板错误上有更多人类可读的错误消息。