How can i link my c++ program statically with libstdc++ on osx using clang?

milo picture milo · May 5, 2014 · Viewed 18.2k times · Source

i'm writting c++ program and i want to distribute it on Mac OS X versions 10.6 and above. The problem is when i compile the program with clang and it's dynamically linked with libstdc++ and it causes problems with older systems.

There is a key -static-stdc++ in gcc but there's no one in clang. How can i link my program statically with clang?

My main goal is to compile binary on Mac OS X 10.9 and be able to run it on earlier versions. Maybe there's a different way?

Thank you.

Answer

Edward picture Edward · May 5, 2014

Under Linux, this command works:

clang --std=c++11 -stdlib=libstdc++ loopy.cpp -o loopy -static -lstdc++

Where loopy is of course the name of my program.

Update:

It appears that Apple strongly discourages static linking so it suggests another approach is needed.

This answer on creating backwards compatible OS X software may be of use to you instead.