J'ai une question: Comment compiler une bibliothèque statique sous Linux avec gcc
, c'est-à-dire que j'ai besoin de compiler mon code source dans un fichier nommé out.a. Est-il suffisant de simplement compiler avec la commande gcc -o out.a out.c
? Je ne suis pas tout à fait familier avec gcc
, j'espère que n'importe qui pourra me donner un coup de main.
c
gcc
static-libraries
Summer_More_More_Tea
la source
la source
Réponses:
Voir Création d'une bibliothèque partagée et statique avec le compilateur gnu [gcc]
-c
signifie créer un fichier objet intermédiaire, plutôt qu'un exécutable.Cela crée la bibliothèque statique.
r
signifie insérer avec remplacement,c
créer une nouvelle archive ets
écrire un index. Comme toujours, consultez la page de manuel pour plus d'informations.la source
Voici un exemple complet de makefile:
makefile
expliquant le makefile:
target: prerequisites
- la tête de règle$@
- désigne la cible$^
- signifie tous les prérequis$<
- signifie juste le premier prérequisar
- un outil Linux pour créer, modifier et extraire des archives, voir les pages de manuel pour plus d'informations . Les options dans ce cas signifient:r
- remplacer les fichiers existants dans l'archivec
- créer une archive si elle n'existe pas déjàs
- créer un index de fichier objet dans l'archivePour conclure : la bibliothèque statique sous Linux n'est rien de plus qu'une archive de fichiers objets.
main.c en utilisant la lib
lib.h l'en-tête principal de libs
lib1.c première source de la bibliothèque
lib1.h l'en-tête correspondant
lib2.c deuxième source de la bibliothèque
lib2.h l'en-tête correspondant
la source
ar
faut une explication, car c'est la clé pour créer la bibliothèque statique.ar
programme crée, modifie et extrait des archives, qui sont des fichiers uniques contenant une collection d'autres fichiers dans une structure qui permet de récupérer les fichiers individuels d'origine.ar
crée un index des symboles définis dans les modules d'objets déplaçables dans l'archive lorsque vous spécifiez le modificateur s. (voirman ar
)c++
compilateur:#ifdef __cplusplus extern "C" { #endif . . . #ifdef __cplusplus } #endif
Générez les fichiers objets avec gcc, puis utilisez
ar
pour les regrouper dans une bibliothèque statique.la source