Context first: I have a header (event.h), a program called event.c, and the main program main.c. This program will be compiled, generating first a object program (event.o), then a static library (libevent.a) in a separate folder, and then the executable program work1.exe
To do this I created this 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
The result of executing the makefile leads to this error:
$ 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
Any idea what is going on here? Is there a way to compiling this without installing anything?
The specific error is the following line:
/usr/bin/ld: cannot find -lc
The linker cannot find the C libraries required for statically linking your library. You can try and see if libc.a
already exists on your system by calling locate libc.a
. If this returns, add an appropriate library flag pointing to the directory that includes libc.a
.
If libc.a
is not installed, you unfortunately need to install the library if you want to compile your library statically. Since you stated you are on CentOS, you should be able to accomplish this with yum install glibc-static
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With