Kontekst pierwszy: Mam nagłówek (event.h), program o nazwie event.c i program główny main.c. Ten program zostanie skompilowany, generując najpierw program obiektowy (event.o), następnie bibliotekę statyczną (libevent.a) w osobnym folderze, a następnie program wykonywalny work1.exe/usr/bin/ld: nie można znaleźć -lc podczas kompilacji z makefile
Aby to zrobić, stworzyłem ten plik 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
efektem realizacji makefile prowadzi do tego błędu:
$ 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
Każdy pomysł, co tu się dzieje? Czy istnieje sposób na skompilowanie tego bez instalowania czegokolwiek?
'ar rcs lib/libevento.a event.o' <- literówka tutaj lub w faktycznym pliku makefile? –
Wyglądałoby to tak, jakbyś nie miał bibliotek c wymaganych do łączenia statycznego. Na jakiej platformie to kompilujesz? – hoxworth
W tym momencie kompiluję się z CentOS. Ten sam program był testowany z Ubuntu i działał. – SealCuadrado