web-dev-qa-db-ja.com

/ usr / bin / ld:makefileでコンパイル中に-lcが見つかりません

最初にコンテキスト:ヘッダー(event.h)、event.cというプログラム、およびメインプログラムmain.cがあります。このプログラムはコンパイルされ、最初にオブジェクトプログラム(event.o)、次に別のフォルダーの静的ライブラリ(libevent.a)、次に実行可能プログラムwork1.exeが生成されます。

これを行うために、このmakefileを作成しました。

work1 : main.c libevent.a
    gcc -static main.c -L./lib -levent -o work1 -Wall

event.o: event.c
gcc -c event.c -Wall

libevent.a: event.o
ar rcs lib/libevento.a event.o 

clean: 
rm work1 *.o

メイクファイルを実行した結果、次のエラーが発生します。

 $ make
 gcc -c event.c -Wall
 ar rcs lib/libevent.a event.o 
 gcc -static main.c -L./lib -levent -o work1 -Wall
 /usr/bin/ld: cannot find -lc
 collect2: ld returned 1 exit status
 make: *** [work1] Error 1

ここで何が起こっているのでしょうか?何もインストールせずにこれをコンパイルする方法はありますか?

32
SealCuadrado

特定のエラーは次の行です。

/usr/bin/ld: cannot find -lc

リンカーは、ライブラリを静的にリンクするために必要なCライブラリを見つけることができません。 libc.aを呼び出すことにより、locate libc.aがシステムに既に存在するかどうかを確認できます。これが返される場合、libc.aを含むディレクトリを指す適切なライブラリフラグを追加します。

libc.aがインストールされていない場合、ライブラリを静的にコンパイルする場合、残念ながらライブラリをインストールする必要があります。あなたはCentOSにいると述べたので、yum install glibc-staticでこれを達成できるはずです。

63
hoxworth