Makefile pour une bibliothèque
J'ai pour l'exécution de ces 4 commandes sur le terminal à chaque fois que je veux exécuter le programme à l'aide de bibliothèques.
Les lignes sont
cc -m32 -c mylib.c
ar -rcs libmylib.a mylib.o
cc -m32 -c prog.c
cc -m32 prog.o -L. -lmylib
./a.out
Comment puis-je faire un makefile pour les commandes ci-dessus et de l'exécuter?
Une procédure détaillée serait appréciée. Merci.
Edit:
Voici la solution:
a.out: prog.o libmylib.a
cc prog.o -L. -lmylib
prog.o: prog.c mylib.h
libprint_int.a: mylib.o
ar -rcs libmylib.a mylib.o
print_int.o: mylib.c mylib.h
clean:
rm a.out prog.o libmylib.a mylib.o
Cela a donné une erreur à la ligne 2, car j'ai utilisé des espaces au lieu de l'onglet.
Il y a un peu de redondance ici. Avec les bibliothèques statiques, vous obtiendrez le même résultat si vous avez juste un lien de la
.o
fichiers directement dans l'application, plutôt que de leur farce dans un .a
du premier fichier. Une bibliothèque statique est un peu plus qu'un tas de .o
fichiers collés ensemble, après tout.OriginalL'auteur Aakash Anuj | 2012-08-03
Vous devez vous connecter pour publier un commentaire.
Quelque chose comme:
pourrait vous aider à démarrer
tout juste commencé à utiliser les makefiles moi-même et je pense qu'ils sont assez difficile, mais une fois que vous les obtenez en travaillant, ils rendent la vie beaucoup plus facile (ceux de prob, plein de bugs, mais certains des plus expérimentés AFIN de folk prob être en mesure d'aider à les corriger)
Comme pour la course, assurez-vous d'enregistrer le fichier sous "Makefile" (la casse est importante)
puis à partir de la ligne de cmd (assurez-vous cd vers le dossier contenant le fichier Makefile):
thats it!
Mise à JOUR
si l'intermédiaire bibliothèque statique est superflu, vous pouvez ignorer avec un Makefile comme ceci:
Il donne l'erreur Makefile:25: *** absence de séparateur. Stop. pour le deuxième et le Makefile:10: *** absence de séparateur. Stop. pour la première
Veuillez répondre à cette
dans un makefile à la règle, l'espace vide à gauche d'une commande n'est pas une chaîne d'espaces, il doit être un caractère de TABULATION.
OriginalL'auteur bph
Le plus simple tutoriel pour comprendre de rendre les fichiers est disponible dans Cprogramming.com. Une fois que vous êtes à travers avec la compréhension, alors vous pouvez passer par la faire fichier manuel.
OriginalL'auteur Shash
Je pense qu'il n'est pas plus détaillée de la procédure de la documentation officielle de la commande make: http://www.gnu.org/software/make/manual/make.html#Overview
Fondamentalement, vous aurez à créer une cible et placez vos commandes. La cible pourrait être "tous" si vous voulez qu'il fonctionne lorsque vous tapez 'make'. Un bon makefile va sûrement utiliser des variables etc pour rester souple sur les lib/sources ajouts.
OriginalL'auteur nathan