Comment faire pour compiler la bibliothèque sur C avec GCC?
J'ai fait une bibliothèque avec les fichiers pila.h
et pila.c
. Je compile le fichier pila.c
avec gcc pila.c -c
et cette bibliothèque fonctionne très bien. Je l'ai testé.
Puis j'ai fait une autre bibliothèque. Cette bibliothèque contient les fichiers pila_funciones_extra.h
et pila_funciones_extra.c
. Dans cette bibliothèque, j'ai besoin d'inclure la première bibliothèque. Dans le fichier pila_funciones_extra.h
j'ai mis la ligne suivante afin d'inclure:
#include "pila.h"
et dans le fichier pila_funciones_extra.c
j'ai mis la ligne suivante:
#include "pila_funciones_extra.h"
comme il doit l'être.
Mais lorsque j'essaie de compiler le fichier pila_funciones_extra.c
le compilateur doensn pas reconnaître l'inclusion de la bibliothèque pila
. Il est dit que les fonctions, les structures, les constantes et les macros qui sont définis dans la bibliothèque pila
n'ont pas été définis.
J'ai essayé de le compiler avec gcc pila_funciones_extra.c -c
et gcc pila_funciones_extra.c -c pila.o
mais ça ne fonctionne pas.
J'ai fait en sorte que tous les fichiers sont dans le même dossier.
Je travaille sur Ubuntu.
Quelqu'un peut me dire la bonne façon de le compiler?
Avez-vous d'utiliser le drapeau
-l pila.o
lorsque vous compilez des pila_funciones_extra.c
?Êtes-vous à l'aide de l'inclusion-gardes?
#ifndef's
? Par exemple, si vous utilisez le même dans les deux-têtes, puis seulement le _extra.h
obtiendrez inc ed.En bref, prendre le temps d'apprendre à propos de
make
OriginalL'auteur Adrian | 2013-02-17
Vous devez vous connecter pour publier un commentaire.
Abord, il faut toujours prendre l'habitude de compiler avec
-Wall
(et peut-être même aussi-Wextra
pour obtenir encore plus de mises en garde) option pourgcc
; il vous donne presque tous les avertissements, et vous devriez améliorer votre code jusqu'à pas d'avertissements sont donnés.Ensuite, vous souhaitez souvent être en mesure de déboguer votre code, donc aussi passer
-g
àgcc
. Une fois que vous êtes à l'aise avec votre code, vous pourriez demandergcc
optimisé pour produire du code machine avec-O2
. Apprendre à utiliser legdb
débogueur.Compiler votre bibliothèque d'abord, en supposant que ses fichiers source
first1.c
etfirst2.c
sont enFirstLib/
répertoire, avec, par exemple,À ce stade, vous devez utiliser un
Makefile
et apprendre à les utilisermake
, en particulier parce que vous souhaitez obtenir votrelibfirst.a
avecEnsuite, vous pouvez passer
-L../FirstLib -lfirst
comme la dernière des options pour lagcc
commande de compilation et la liaison de votre programme à l'aide de votrelibfirst.a
Puis compilez votre bibliothèque deuxième en ayant votre
Makefile
dans le répertoireSecondLib/
qui très probablement devrait conteniretc etc. Vous voulez vraiment apprendre à utiliser
make
et écrire votre propreMakefile
-s afin de prendre le temps de lire les Make de GNU de documentation.Vous pouvez vous passer
-H
àgcc
pour l'avoir à vous dire tous les fichiers inclus, et vous pouvez également utiliser remake (en plus & le remplacement demake
) pour déboguer votre plus complexeMakefile
-s (notamment par l'exécution deremake -x
). Ici est un exemple deMakefile
; vous trouverez beaucoup d'autres!Également lire les Programme De La Bibliothèque Howto.
OriginalL'auteur Basile Starynkevitch
Pour une bibliothèque composée de nombreux fichiers, vous pouvez d'abord compiler ensuite séparément et ensuite ce faire:
Cette commande provoque la bibliothèque pour être créée si elle n'existe pas déjà. Si il le fait, l' .o mise à jour des fichiers (ou ajouté à cette bibliothèque). Le ranlib est utilisé pour générer la bibliothèque dans une manière qui est utile pour le chargeur.
Lorsque vous utilisez cette bibliothèque, vous n':
OriginalL'auteur kdmin