Comment 45 for bug 1488254

Revision history for this message
In , Renato Golin (rengolin) wrote :

(In reply to comment #42)
> OpenMandriva has successfully changed the compiler to clang (3.7.1 for now,
> will update to 3.8 as it is released), but decided to stick with libstdc++
> to preserve binary compatibility with other Linux distributions -- users
> want to run non-open source stuff like steam, and that stuff doesn't get
> built for OSes that don't have a giant user base.

If you ship GCC at all, and if that happens to be 5.x, and you happen to choose to enable the CXX11 ABI by default, you'll run into the exact same problem. Doesn't matter who's on top.

> OpenMandriva could switch system libraries etc. to libc++, but even then
> problems would likely arise (e.g. binary-only application links to Qt and
> expects Qt to be linked to libstdc++ -- the only "fix" would be providing 2
> different versions of all C++ libraries and even then things would likely
> break, with e.g. libstdc++-Qt not being able to load style plugins built for
> libc++-Qt and vice versa, so custom installed widget themes wouldn't work
> for binary-only applications).

That, in addition to multilib/multiarch will be a major pain for all distros. This really isn't a solution.

> So yes, there indeed is a use case for building the entire OS with clang but
> not libc++ until we get to a point where relevant closed source stuff
> switches to libc++ (or better yet, gets open sourced so people can link it
> to any STL they like).

Even if the day Clang and libc++ become the top dog on most Linux distributions ever comes, we'll still have to cope with legacy GCC and libstdc++ for a good number of decades from then on.

Coexisting is the only solution for this century.