/usr/bin / ld: impossible de trouver -LC lors de la compilation avec makefile
Contexte d'abord: j'ai un en-tête (événement.h), un programme appelé événement.c, et le programme principal principal.C. Ce programme sera compilé, générant d'abord un programme objet (événement.o), puis une bibliothèque statique (libevent.a) dans un dossier séparé, puis le travail du programme exécutable 1.exe
Pour ce faire j'ai créé ce 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
Le résultat de l'exécution du makefile conduit à cette erreur:
$ 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
Une idée de ce qui se passe ici? Existe-t-il un moyen de compiler cela sans l'installation de quoi que ce soit?
1 réponses
L'erreur spécifique est la ligne suivante:
/usr/bin/ld: cannot find -lc
L'éditeur de liens ne peut pas trouver les bibliothèques C nécessaires pour lier statiquement votre bibliothèque. Vous pouvez essayer de voir si libc.a
existe déjà sur votre système en appelant locate libc.a
. Si cela revient, ajoutez un indicateur de bibliothèque approprié pointant vers le répertoire qui inclut libc.a
.
Si libc.a
n'est pas installé, malheureusement vous devez installer la bibliothèque si vous voulez compiler votre bibliothèque de manière statique. Puisque vous avez déclaré que vous êtes sur CentOS, vous devrait être capable d'accomplir cela avec yum install glibc-static
.