J'en ai plusieurs .c fichiers et .un fichier objet. Quelle commande avec gcc dois-je utiliser pour compiler un fichier exe? Si l'on utilise un makefile, comment peut-elle ressembler?
L' .un fichier est une bibliothèque, déjà compilé. Vous compilez votre .c fichier .o, puis vous utilisez l'éditeur de liens pour votre lien .o avec la .un pour produire un exécutable.
Ne pas répondre à la question sur comment pour le faire. Ne dites pas "comment il va ressembler".
Pour les cas les plus simples que vous pouvez probablement le faire:
gcc -o maybe.exe useful.a something.c
Makefiles pour les non-trivial projets généralement d'abord invoquer gcc compiler chaque .c fichier .o objet.
gcc -c something.c
Puis ils invoquer l'éditeur de liens (ces jours-ci, souvent à l'aide de gcc comme un wrapper pour elle) avec une liste de .o et .un fichiers pour créer un lien avec une sortie de l'exécutable.
gcc -o maybe.exe useful.a something.o
Noter également que pour la plupart des bibliothèques installées, il est typique de ne pas spécifier explicitement le .un fichier, mais au lieu de dire -lhandy qui sera de courte durée pour "essayer de trouver quelque chose qui s'appelle libhandy.un dans la configuration de la (ou spécifiée avec-L) les répertoires de recherche"
Merci à anonyme pour la capture de l'erreur dans le fichier de l'objet de la génération
*.a est une bibliothèque statique et non dynamique (*.dll dans windows et *.so dans linux)
gcc -L<here comes the library path>-l<library name>
par exemple pour le fichier que vous avez libname.un dans le chemin d'accès actuel, vous devez utiliser:
gcc *.c -L.-lname -o myprogram.o
de la l'homme (mettre l'homme gcc dans l'invite de commande shell)
Vous pouvez mélanger des options et d'autres arguments. Pour la plupart, l'ordre
vous utilisez n'a pas d'importance. L'ordre n'est question lorsque vous utilisez plusieurs options
de même nature; par exemple, si vous spécifiez-L plus d'une fois, l'
les répertoires sont recherchés dans l'ordre spécifié. Aussi, le placement
de l'option-l est importante.
Changé gcc -L<here comes the library path> -l<library name> de gcc -l <here comes the library path> -l<library name>. Espérons qu'est ce que tu voulais dire Pourquoi utilisez-vous -lname si la bibliothèque est libname.a? Lire gcc.gnu.org/onlinedocs/gcc/Link-Options.html
L' .un fichier est une bibliothèque, déjà compilé. Vous compilez votre .c fichier .o, puis vous utilisez l'éditeur de liens pour votre lien .o avec la .un pour produire un exécutable.
OriginalL'auteur TJD
Pour les cas les plus simples que vous pouvez probablement le faire:
Makefiles pour les non-trivial projets généralement d'abord invoquer gcc compiler chaque .c fichier .o objet.
Puis ils invoquer l'éditeur de liens (ces jours-ci, souvent à l'aide de gcc comme un wrapper pour elle) avec une liste de .o et .un fichiers pour créer un lien avec une sortie de l'exécutable.
Noter également que pour la plupart des bibliothèques installées, il est typique de ne pas spécifier explicitement le .un fichier, mais au lieu de dire -lhandy qui sera de courte durée pour "essayer de trouver quelque chose qui s'appelle libhandy.un dans la configuration de la (ou spécifiée avec-L) les répertoires de recherche"
OriginalL'auteur Chris Stratton
*.a
est une bibliothèque statique et non dynamique (*.dll
dans windows et*.so
dans linux)par exemple pour le fichier que vous avez libname.un dans le chemin d'accès actuel, vous devez utiliser:
de la l'homme (mettre l'homme gcc dans l'invite de commande shell)
gcc -L<here comes the library path> -l<library name>
degcc -l <here comes the library path> -l<library name>
. Espérons qu'est ce que tu voulais direPourquoi utilisez-vous
-lname
si la bibliothèque estlibname.a
?Lire gcc.gnu.org/onlinedocs/gcc/Link-Options.html
OriginalL'auteur 0x90