/ 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 

执行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来尝试查看系统中是否已存在locate libc.a 如果返回,请添加指向包含libc.a的目录的相应库标志。

如果未安装libc.a则遗憾的是,如果要静态编译库,则需要安装库。 既然你说你在CentOS上,你应该可以用yum install glibc-static来完成这个。