/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?

28
demandé sur SealCuadrado 2013-04-16 01:26:07

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.

48
répondu hoxworth 2013-04-15 21:49:51