2012-12-03 11 views
6

私はSTLのソースを読み込んでデバッグすることでC++を深く学びたいので、libstdc++を静的に私のプログラムにリンクしたいのですが、g++を使ってうまく動作します。しかし、llvmでclang++と同じことをどのように達成できますか?libstdC++を静的にclang ++にリンクさせる方法

他の方法では、clang++相当のものは-static-libgccとなりますか?私は

CXX=g++ 
CC=g++ 
LDFLAGS=-g -O0 -static-libgcc 
CFLAGS=-O0 -Wall 
CXXFLAGS=$(CFLAGS) 
+0

私は、静的リンクは何が必要だとは思いません。静的か動的かにかかわらず、ライブラリのデバッグ情報が必要です。異なるLinuxディストリビューションの異なる場所でこれを見つけることができます。いくつかはデバッグ情報を持ったスタティックライブラリを持っていますが、どこかで共有ライブラリを解除しているものもあれば、共有ライブラリのデバッグ情報を持っているものもあります(Debian/Ubuntuのように)。 –

+0

私はg ++でやってみましたが、静的リンクが動作していて、libstdC++。dylibは削除されていないので、libstdC++。私は共有ライブラリを見つけなければならないのですか? – Haocheng

答えて

3

あなたが探しているフラグを使用してい

Makefile、GCCとクランの両方で、次のとおりです。-static-libstdc++

+1

これは、Clang 4.2のコンパイル時に「引数-static-libstdC++」という警告を出力します。 – vitaut

+1

CentOS 7のclang ++バージョン4.2.1には があります。 'clang:警告:コンパイル時に引数が使用されません: '-static-libstdC++' ' 静的リンクは発生しません。 – scrutari

+1

これはリンク時のフラグであり、コンパイル時のフラグではありません。あなたが質問を見ると '-static-libgcc'フラグが' LDFLAGS'変数に追加されています。このフラグはこの変数を追加する場所です。 –

関連する問題