g++ compiler options -g et debug -O optimisation
Je ne suis pas assez familier avec g++ compilateurs, en particulier les options, comme par exemple, -s, -v et -O.
Tout d'abord, puis-je demander quand ces options prennent effet? Lors de la compilation ou de la phase de liaison? J'ai l'habitude de mettre toutes les options dont j'ai besoin dans les deux phases.
Deuxièmement, y a -g1, -g2-g3 options? Je sais -g ajoute les informations de débogage dans le fichier exécutable. Comment font les autres diffèrent-ils?
Troisièmement, ce que ne -s? Ne -s, -v et -O3 travailler ensemble? Mon objectif est de rendre le fichier exécutable 1) courir vite, et 2) de petite taille si possible. Que proposez-vous?
puis-je demander toutes les options dans la compilation de phase ou phase de liaison ou les deux phases? Puis-je inclure les informations de débogage -g lors de la phase de compilation, puis d'appliquer l'-O3 et -s dans la phase d'édition de liens? Je ne sais pas si c'...
en fait, je suis en train d'écrire un Makefile. Je me demande si je peux inclure les informations de débogage dans la compilation pour la création de fichiers de l'objet, puis de créer deux exécutables de versions différentes à l'aide des fichiers de l'objet. Est-il possible? merci.
Je pense que vous êtes d'étendre un peu cette question. Oui, vous pouvez le compiler à l'aide de "-ggdb -g3 -O3-c" et puis si vous voulez le lien pour "libération", vous utilisez "-O3-s" et si vous voulez le lien pour déboguer vous utilisez "-O3-ggdb -g3 -O3". Mais pourquoi voudriez-vous une telle chose? Les sauvés de l'espace disque (et le temps) n'est pas beaucoup, et si vous utilisez de l'O3 et le débogage n'est pas très claire. Vous devriez peut-être poster une autre question en expliquant le mieux à votre cas d'utilisation...
en fait, je suis en train d'écrire un Makefile. Je me demande si je peux inclure les informations de débogage dans la compilation pour la création de fichiers de l'objet, puis de créer deux exécutables de versions différentes à l'aide des fichiers de l'objet. Est-il possible? merci.
Je pense que vous êtes d'étendre un peu cette question. Oui, vous pouvez le compiler à l'aide de "-ggdb -g3 -O3-c" et puis si vous voulez le lien pour "libération", vous utilisez "-O3-s" et si vous voulez le lien pour déboguer vous utilisez "-O3-ggdb -g3 -O3". Mais pourquoi voudriez-vous une telle chose? Les sauvés de l'espace disque (et le temps) n'est pas beaucoup, et si vous utilisez de l'O3 et le débogage n'est pas très claire. Vous devriez peut-être poster une autre question en expliquant le mieux à votre cas d'utilisation...
OriginalL'auteur jason.Z | 2012-09-12
Vous devez vous connecter pour publier un commentaire.
Vous ne devriez pas se concentrer sur les options, mais sur ce que vous voulez atteindre. Mes commentaires d'ordre général sur ce que vous voulez atteindre:
Utilisez toujours le manuel (accessible en tapant dans un shell homme "g++", ou en recherchant sur internet "homme g++") et de recherche pour les options si vous êtes curieux de ce qu'il fait. Si vous avez un niveau supérieur à la question, vous pouvez demander (par exemple la différence entre g1 et g3 est expliqué dans le manuel)
Comme une suggestion: utilisez -O3. Si vous développez en permanence le programme et l'utiliser GDB comme débogueur utilisation: -ggdb -g3.
Edit: en ce qui Concerne sur le moment de les appliquer: généralement, vous n'avez pas à vous soucier de phase, il est, il vous suffit d'envoyer les options et le g++ prend soin d'eux. Quand vous voulez quelque chose de plus spécifique, alors vous pouvez vérifier plus de.
info gcc
) est beaucoup plus complet de sa page de manuel.merci. Je vais essayer d'en savoir plus dans le manuel à l'avenir.
pouvez-vous me l'expliquer directement? merci.
OriginalL'auteur vladmihaisima