[cfe-dev] libc++abi on linux

Ben Pope benpope81 at gmail.com
Sun Jul 8 20:00:48 PDT 2012

On Monday, July 09, 2012 08:49 AM, "C. Bergström" wrote:
> libcxxrt + libunwind is the way to go imho
> https://github.com/pathscale/libcxxrt
> https://github.com/pathscale/libunwind
> These have been tested to work with clang - Admittedly the build process
> may not be straight forward, but if enough interest maybe we solve that

It would be nice to have a documented/tested/working way of compiling 
*and linking* programs using libc++/clang/llvm on linux, it seems that 
libc++abi is pretty close to getting that working.

This comes up on the list every couple of months and libcxxrt/libunwind 
are usually suggested over libc++abi.

What is the problem?  Is there some disagreement about the scope of 
libc++abi?  Is there some specific part that has been excluded that is 
required on linux but not darwin?  Does libc++abi replace libsupcxx (not 
entirely)?  Does libunwind address just the missing bit or is there 
overlap? If there is overlap is linking order enough to fix that? is 
libc++abi equivalent to libcxxrt? And there are lots of other questions 
that come up and it just makes it hard to get going.

I think it's a real shame that this is not documented for linux, I 
suspect it is preventing the uptake of libc++ with clang on linux and 
that's a real shame, especially as libc++ has become the default in the 
next xcode.

There are other problems as well; sometimes it's really a pain to get 
configure to work properly when trying to choose between which abi bits 
we want, it would be nice if we could do:

clang++ -std=c++11 -stdlib=libc++ -stdlibabi=libc++abi -stdlibunwind?=???

Really that line starts to get a bit scary, if I'm using clang in c++11 
mode, there should be a default that works, I strongly suggest that the 
default library is libc++ (because stdlibc++ practically always requires 
a patch to work with clang), and that the missing bits (abi/unwind) can 
be made to Just Work(tm).

Can the defaults be configured when you configure clang or through some 
other global means so that I don't have to teach every build system what 
is required?


More information about the cfe-dev mailing list