Подтвердить что ты не робот

/usr/bin/ld: не удается найти -lc при компиляции с make файлом

Сначала контекст: у меня есть заголовок (event.h), программа под названием event.c и основная программа main.c. Эта программа будет скомпилирована, создавая сначала объектную программу (event.o), затем статическую библиотеку (libevent.a) в отдельной папке, а затем исполняемую программу work1.exe

Для этого я создал этот make файл:

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

Результат выполнения make файла приводит к этой ошибке:

 $ 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

Любая идея, что здесь происходит? Есть ли способ скомпилировать это, не устанавливая ничего?

4b9b3361

Ответ 1

Конкретная ошибка следующая строка:

/usr/bin/ld: cannot find -lc

Компонент не может найти библиотеки C, необходимые для статической привязки вашей библиотеки. Вы можете попробовать, если libc.a уже существует в вашей системе, вызывая locate libc.a. Если это вернет, добавьте соответствующий флаг библиотеки, указывающий на каталог, который включает libc.a.

Если libc.a не установлен, вам, к сожалению, необходимо установить библиотеку, если вы хотите скопировать вашу библиотеку статически. Поскольку вы заявили, что находитесь в CentOS, вы сможете выполнить это с помощью yum install glibc-static.