【问题标题】:Does libcxxabi makes sense under linux? What are the benefits?libcxxabi 在 linux 下有意义吗?有什么好处?
【发布时间】:2014-04-25 22:12:14
【问题描述】:

我正在尝试确定在 linux 下从 llvm 项目构建和使用 libcxxabi 是否有意义。

我的libcxxabi 已链接到

ldd libc++abi.so.1.0 
    linux-vdso.so.1 =>  (0x00007fff2e0db000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fd658f0d000)
    librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fd658d05000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fd65893c000)
    libc++.so.1 => /path/where/clang/is // edited
    /lib64/ld-linux-x86-64.so.2 (0x00007fd6593ab000)
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fd658465000)

所以它使用gcc_s 库、GNU librt,唯一真正的区别是它使用libc++ 而不是libstdc++,但这到底有多好?

鉴于 abi 库的关键作用,我应该在这样的平台下选择libcxxabi 吗?

我的问题不在于如何构建它,或者这是否可行,而是如果这是一个好主意C++ 方面,我可以获得什么样的好处,或者什么样的好处如果您已经在使用它,您将获得的好处。

【问题讨论】:

  • 我觉得你的 libcxxabi 链接到 libc++ 很奇怪。应该反过来。至于你的问题。在仍然依赖于 libsupc++(静态链接到 libstdc++)的 Linux 系统上,确实没有理由使用 libcxxabi。不过,如果您想制作一个非 gnu linux 系统,它会很有用。
  • 也许应该与其他标准 c++ 库实现进行一些性能比较?此外,直到 GCC 5.1,libstdc++ 不符合 C++11。现在这两个实现共存于共享对象中,但在不同的命名空间下。
  • 不要使用 libcxxabi。它适用于 libcxx (libc++),并且仅适用于 macOS。 Homebrew 的 llvm 公式甚至没有使用它,因为它添加了一个 rpath,而 Homebrew 维护者大多是被尊崇的 Web 开发人员,所以他们只是删除了他们不理解的内容。

标签: linux clang llvm abi libc++


【解决方案1】:

您不应该直接使用 libcxxabi。据我了解,它是一种平台抽象库,提供实现 libcxx 所需的低级函数。

如果您询问使用 libcxx 或 libstdc++,差异主要在于许可证、新标准版本的完整性(clang 项目在实施最近的 C++ 修订版方面似乎稍快一些)以及您有两个替代实现这一事实。

其中一个似乎没有紧迫的理由。我会坚持在您的系统上得到更好支持的那个。这两个项目都旨在与 ABI 兼容,因此应该可以在没有任何损坏的情况下使用其中任何一个。

【讨论】:

    猜你喜欢
    • 2012-05-10
    • 1970-01-01
    • 2016-09-16
    • 2010-09-23
    • 2019-01-18
    • 2020-10-29
    • 2011-04-24
    • 1970-01-01
    • 2020-04-27
    相关资源
    最近更新 更多