[llvm-dev] Statically linking against libc++

Carsten Mattner via llvm-dev llvm-dev at lists.llvm.org
Mon Apr 10 00:53:44 PDT 2017

On Mon, Apr 10, 2017 at 4:59 AM, Mehdi Amini <mehdi.amini at apple.com> wrote:
> What you build with clang and how clang is built aren’t
> related at all.
> You can build LLVM as a set of dynamic libraries, and
> still use clang to generate a statically linked binary.

Of course not and I can see how my message was ambiguous.

Since C++ code almost always needs a standard lib and
given past precedents on Linux with glibc/libgcc/libstdc++,
I asked myself if and how I can statically link libc++.
This is a little more important because libc++ - unlike
FreeBSD and macOS - is not necessarily on a system. Hence
my static linking question. Looking closer, Arch linux
has libc.a even though it doesn't install .a for packages
by default so glibc's C stdlib must have been used in
that clang++ -static foo.cc invocation.

This is good but since glibc may not link statically in
all scenarios, do you know how I could run clang++ on a glibc
Linux while delegating C stdlib to musl-libc? I mean,
-nostdlib or -nodefaultlib could be used but then stuff
gets hairy or too explicit quickly. I'm hoping -static
could be made to use libc++.a, musl libc.a and maybe
libunwind compiler-rt etc.

More information about the llvm-dev mailing list