単純なプログラムをコンパイルしようとしています。
gcc main.c
gccで次のエラーが発生します。
/usr/bin/ld: cannot find -lc
collect2: error: ld returned 1 exit status
この問題をどのように解決できますか?
私はLinux Mint 17.2を使用しています。 gccのバージョンは4.8.4です。
答え1
ld
リンカは、作成したコードを既存のライブラリコードと組み合わせるプログラムです。-lc
ファイルに保存され、リンカーに渡されたlibc.a
オプションの結果としてリンクされるライブラリを表します。-lc
libc
~であるC標準ライブラリ、リンクしないように明示的に要求しない限り、すべてのプログラムで自動的にリンクされます(libc自体をコンパイルするなどの操作を除いてはほとんど行われません。libcなしでできることはほとんどなく、あいまいに移植可能まったく不可能だからです)。
提供する必要がありますlibc.a
。見つけることができます(最初にインストールしてから実行して初期化する必要がありapt-file search /libc.a
ます)。このパッケージは、Debianおよびその派生物(Ubuntu、Mintなどを含む)のほとんどの開発パッケージと呼ばれます。ここで、NAMEはライブラリコレクションの名前です(常にリンクしている特定のライブラリの名前ではありません)。 package)などの他のライブラリが含まれており、#はバージョン番号です。apt-file
sudo apt-file update
libc6-dev
libNAME#-dev
libc6
libm
C標準ライブラリはほぼすべてを構築するために必要なので構築に必要なパッケージ、コンパイルを実行する場合は含める必要があります。