web-dev-qa-db-ja.com

g ++ linuxで-lcと-lmが見つかりません

私はubuntuを使用しており、gccとg ++は正常に機能していましたが、今日は次のように表示されました。

cannot find -lm
cannot find -lc

検索したところ、/usr/bin/ldと関係があることがわかりました。これはlbd.bdfへのシンボリックリンク(私は願っています)です。そのファイルを友達のPCのubuntuのディレクトリに貼り付けました。それはうまくいきませんでした。

-lcは静的ライブラリlibc.aを含めることを意味することがわかりました。
同様に-lm

i386-linux-foldersで見つけました(名前が違う)。

コードブロックを試しましたが、同じエラーが発生しました。

14
Ashish Negi

libpath(g ++)がlibm.aとlibc.aが配置されているディレクトリを指していることを確認してください(-Lオプションを使用)

6
KevinDTimm

コンパイラが静的glibcを見つけることができません。共有ライブラリのみをインストールした可能性があります
試してみてください

yum install glibc-static

24
user1772382

ldはGNUリンカーです。

man ld ldは、多数のオブジェクトファイルとアーカイブファイルを組み合わせ、それらのデータを再配置し、シンボル参照を拘束します。通常、プログラムをコンパイルする最後のステップは、ldを実行することです。

これは、プログラムをCライブラリおよびC数学ライブラリにリンクするために使用されます。 libc6-devがインストールされています:

foo@bar: $ dpkg -s libc6-dev

または、より一般的な場合は、build-essential、これは少数の重要なCパッケージに依存します。

foo@bar: $ dpkg -s build-essential
0
Sebastian Mach