Ngữ cảnh đầu tiên: Tôi có một tiêu đề (event.h), một chương trình gọi là event.c và main.c. Chương trình này sẽ được biên dịch, tạo ra một chương trình đối tượng đầu tiên (event.o), sau đó là một thư viện tĩnh (libevent.a) trong một thư mục riêng biệt, và sau đó chương trình thực thi work1.exe/usr/bin/ld: không thể tìm thấy -lc khi biên dịch với makefile
Để làm điều này, tôi tạo ra tệp makefile này :
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
kết quả của việc thực hiện các makefile dẫn đến lỗi này:
$ 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
Bất kỳ ý tưởng những gì đang xảy ra ở đây? Có cách nào để biên dịch này mà không cần cài đặt gì không?
'ar rcs lib/libevento.a event.o' <- typo ở đây hoặc trong makefile thực tế? –
Nó sẽ xuất hiện như thể bạn không có các thư viện c cần thiết cho liên kết tĩnh. Bạn đang biên dịch nền tảng nào? – hoxworth
Trong thời điểm này tôi đang biên dịch với CentOS. Chương trình tương tự đã được thử nghiệm với Ubuntu và nó hoạt động. – SealCuadrado