À l'aide de la bibliothèque des chemins dans les fichiers makefile
J'ai écrit un makefile comme ceci:
HEADER = -I./cygdrive/c/cpros/kajj/source4
LIBB = -L./cygdrive/c/cpros/kajj/source1 -L./cygdrive/c/cpros/kajj/source2
LIBRA = -larith -ldekk
target : game.o
gcc $(HEADER) $(LIBB) $< -o $@ $(LIBRA)
game.o : game.c
gcc -c game.c
J'ai créé mon propre bibliothèque statique et inclus l'en-tête du fichier chemin d'accès et le chemin de la bibliothèque. Quand j'execute mon makefile, il donne un message d'erreur indiquant que
/usr/lib/gcc
ne peut pas trouver -larith -ldekk
.
Il pointe vers le répertoire lib/mais il n'est pas là: -ldekk
et -larith
sont en source1 et source2 fichiers respectivement.
Comment résoudre cette erreur?
OriginalL'auteur karthik | 2011-06-23
Vous devez vous connecter pour publier un commentaire.
Au lieu de
-L./cygdrive/c
, utilisez-L/cygdrive/c
. Le point qui rend la bibliothèque chemin relatif à partir du répertoire courant, c'est à dire qu'elle va chercher uncygdrive
sous-dossier du dossier en cours à la place du lecteur C.tamas pouvez-vous me dire la façon de créer une bibliothèque une bibliothèque statique dans les makefiles je veux une bibliothèque nommée comme gola.un et le .o fichiers sont gohh.o hola.o quelque chose comme ça, je veux que, pour être créé, mais en utilisant le makefile comment écrire le code pour créer le fichier de la bibliothèque pourriez-vous me dire sous la forme d'un makefile
Merci de la poser dans une autre question sur Stack Overflow, et quelqu'un (peut-être moi) réponse. Il est préférable de garder un fil de discussion consacré à une question particulière.
Qu'advient-il si la bibliothèque est dans un tout autre chemin? Puis-je écrire quelque chose comme-L~/toto1/foo2/ Merci
J'ai trouvé une bonne réponse ici. Ils expliquent aussi la différence, dans un makefile, entre-l et -L stackoverflow.com/questions/519342/...
OriginalL'auteur Tamás