web-dev-qa-db-ja.com

clangを使用してOSX上のlibstdc ++とc ++プログラムを静的にリンクするにはどうすればよいですか?

私はc ++プログラムを書いていますが、Mac OSXバージョン10.6以降で配布したいと思います。問題は、clangを使用してプログラムをコンパイルすると、libstdc ++と動的にリンクされ、古いシステムで問題が発生することです。

キーがあります-static-stdc++ gccにありますが、clangには誰もいません。プログラムをclangと静的にリンクするにはどうすればよいですか?

私の主な目標は、Mac OS X 10.9でバイナリをコンパイルし、それを以前のバージョンで実行できるようにすることです。たぶん別の方法がありますか?

ありがとうございました。

14
milo

Linuxでは、このコマンドは機能します。

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

loopyはもちろん私のプログラムの名前です。

更新:

Appleは静的リンクを強く推奨していません のようですので、別のアプローチが必要であることを示唆しています。

この回答 下位互換性のあるOSXソフトウェアの作成が代わりに役立つ場合があります。

14
Edward