3

そこで、今日、C++ でいくつかの基本的な支援機能を備えた静的ライブラリを作成しました。Clang 3.2 (SVN スナップショット) でビルドしました。ただし、それにリンクするテスト プログラム (prog.cpp) を実行しようとすると、次のエラーが発生します。

~/Projects/CPP/AssisterLib> g++ prog.cpp -o プログラム -static -L. -ラシスター
/usr/lib64/gcc/x86_64-suse-linux/4.6/../../../../x86_64-suse-linux/bin/ld: -lm が見つかりません
/usr/lib64/gcc/x86_64-suse-linux/4.6/../../../../x86_64-suse-linux/bin/ld: -lc が見つかりません
collect2: ld が 1 つの終了ステータスを返しました

G++ と Clang++ で同じエラーが発生します。どちらも /usr/lib64 (OpenSUSE の glibc-devel で提供) にある libc.a と libm.a が見つからないようです。追加-L/usr/lib64してもエラーは発生しません。

ld がこれらのライブラリを見つけられないのはなぜですか? 行方不明のフラグはありますか?

4

1 に答える 1

3

問題はおそらく の使用です-staticlibmとの静的バージョンがインストールされていないと結論付けますlibc。削除-staticして確認できます。

フラグは-static、実行可能ファイルを完全に静的にリンクすることをコンパイラに通知するため、すべてのライブラリで静的バージョンが利用可能ではない場合、コンパイラは失敗します。

于 2012-08-02T20:08:06.757 に答える