/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
Любая идея, что здесь происходит? Есть ли способ скомпилировать это, не устанавливая ничего?
Ответы
Ответ 1
Конкретная ошибка следующая строка:
/usr/bin/ld: cannot find -lc
Компонент не может найти библиотеки C, необходимые для статической привязки вашей библиотеки. Вы можете попробовать, если libc.a
уже существует в вашей системе, вызывая locate libc.a
. Если это вернет, добавьте соответствующий флаг библиотеки, указывающий на каталог, который включает libc.a
.
Если libc.a
не установлен, вам, к сожалению, необходимо установить библиотеку, если вы хотите скопировать вашу библиотеку статически. Поскольку вы заявили, что находитесь в CentOS, вы сможете выполнить это с помощью yum install glibc-static
.