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

/usr/bin/ld:使用makefile编译时找不到-lc,c,gcc,makefile,C,Gcc,Makefile,上下文优先:我有一个头(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 eve

上下文优先:我有一个头(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
执行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

知道这是怎么回事吗?有没有办法在不安装任何东西的情况下编译此文件?

具体错误如下:

/usr/bin/ld: cannot find -lc
链接器找不到静态链接库所需的C库。通过调用
locate libc.a
,您可以尝试查看系统上是否已经存在
libc.a
。如果返回,请添加一个适当的库标志,指向包含
libc.a
的目录


如果未安装
libc.a
,则如果要静态编译库,则需要安装库。既然您声明自己在CentOS上,那么您应该能够通过
yum安装glibc static

ar rcs lib/libevento来完成这一任务。event.o
看起来好像您没有静态链接所需的c库。你是在什么平台上编译的?现在我在用CentOS编译。同样的程序在Ubuntu上进行了测试,效果良好。请尝试安装glibc静态库-
yum安装glibc static
。如果这不起作用,那么您的
库路径很可能不包含
libc.a的位置(尽管我假设
-L./lib
会包含该位置),或者尝试
gcc main.c-L./lib-L event-o work-Wall