2014-03-19 31 views
37

我试图确定是否从Linux下的llvm项目构建和使用libcxxabi是有意义的。libcxxabi在linux下有意义吗?有什么好处?

我的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++ - 明智,有什么样的好处我都不可能得到的,或者你做了什么样的好处如果你已经在使用这个。

+1

我觉得很奇怪你的libcxxabi正在链接到libC++。它应该是相反的。 至于你的问题。在仍然依赖libsupC++(静态链接到libstdC++)的Linux系统上,实际上没有理由使用libcxxabi。如果你想制作非GNU Linux系统,这很有用。 –

+1

也许应该与其他标准C++库实现做一些性能比较? 此外,直到GCC 5.1,libstdC++不符合C++ 11。现在这两个实现共存于共享对象中,但在不同的名称空间下。 –

回答

2

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

如果您在询问关于使用libcxx或libstdC++,差异主要在于许可证,更新的标准版本完整性(clang项目在执行最近的C++修订版本时似乎略快)以及您有两个备选实现的事实。

似乎没有紧要的原因之一,其他之一。我会坚持在你的系统上得到更好的支持。这两个项目的目标都是ABI兼容,所以应该可以使用,而不是任何破损。