/ usr/bin/ld:使用makefile编译时找不到-lc

Sea*_*ado 32 c gcc makefile

Context first:我有一个头文件(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
Run Code Online (Sandbox Code Playgroud)

执行makefile的结果会导致此错误:

 $ 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
Run Code Online (Sandbox Code Playgroud)

知道这里发生了什么吗?有没有办法在不安装任何东西的情况下编译它?

hox*_*rth 65

具体错误如下:

/usr/bin/ld: cannot find -lc
Run Code Online (Sandbox Code Playgroud)

链接器找不到静态链接库所需的C库.您可以libc.a通过调用尝试查看系统中是否已存在locate libc.a.如果返回,请添加指向包含的目录的相应库标志libc.a.

如果libc.a未安装,如果要静态编译库,则很遗憾需要安装库.既然你说你在CentOS,你应该能够完成这个yum install glibc-static.