2012-06-16 9 views
12

MacでライブラリがlibC++またはlibstdC++でビルドされているかどうかを確認するにはどうすればよいですか?は、MacでlibC++またはlibstdC++で構築されたライブラリでした

私は図書館Xを持っている場合、私はから移動すると、それを再構築する必要があるかどうかを知りたい(Macは何のLDDを持っていない)

を私は-Lをコマンドotool使用されているが、これはそれを表示していないよう

GCCを犯す私はGCCで数多くのライブラリを構築しています。macライブラリは一般的にclang AFAIKで構築されています。

答えて

3

ダイナミックライブラリの場合、otool -Lは、そのライブラリ(つまりC++の場合)に対して構築された場合はlibstdc++と表示されます。

静的ライブラリの場合、質問は意味をなさない。静的ライブラリは他のライブラリに対して構築されていません。

そして、コンパイラを変更するだけで何かを再構築する必要はありません。システム全体のC++ライブラリだけで、安定したABIを持っています。

+0

Hmm - libC++についてのあなたのコメントは正しくありませんv libstdC++ - http://stackoverflow.com/a/8457799/1460739 – user1460739

+0

問題はコンパイラの変更が少なく、標準ライブラリの変更が多くなっています。 – user1460739

+1

他の質問は、特定のC++ライブラリを使用してプログラムをコンパイルしているが、同じC++ライブラリに対してコンパイルされていないライブラリをリンクしている人に関するものです。コンパイラに上書きせずにコンパイラに任せれば、システムのstdC++ライブラリがすべて入手でき、動作します。それを上書きする場合は、すべて同じ方法で上書きする必要があります。 –

8

静的ライブラリnm -a helloworld.a | grep __1

あなたが__1を含む行が表示された場合、例えば__121__basic_stringの場合、ライブラリはlibC++でコンパイルされました。しかし、関数シグネチャのいずれもC++標準ライブラリ型を使用していない場合、これは機能しない可能性があります。

ダイナミックライブラリ:libcの++またはのlibstdC++ dylibへの依存のためotool -L helloworld

ルック。

関連する問題