首先说明背景:我有一个头文件(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
你知道这里在发生什么吗?有没有办法在不安装任何东西的情况下编译它?
ar rcs lib/libevento.a event.o
<- 这里有错别字还是在实际的 makefile 中? - Daniel Fischeryum install glibc-static
。如果不起作用,你的LIBRARY_PATH
很可能不包括libc.a
的位置(虽然我会假设-L./lib
应该有这个...)。 - hoxworthgcc main.c -L./lib -l event -o work -Wall
。 - Valeri Atamaniouk