CGC et en reliant les variables d'environnement et les drapeaux

Le lien suivant dans la documentation officielle pour GCC:

http://gcc.gnu.org/onlinedocs/gcc/Environment-Variables.html

Explique les variables d'environnement suivantes:

LANG
LC_CTYPE
LC_MESSAGES
LC_ALL
TMPDIR
GCC_COMPARE_DEBUG
GCC_EXEC_PREFIX
COMPILER_PATH
LIBRARY_PATH
CPATH
C_INCLUDE_PATH
CPLUS_INCLUDE_PATH
OBJC_INCLUDE_PATH
DEPENDENCIES_OUTPUT
SUNPRO_DEPENDENCIES

Mais j'ai aussi entendu/lu avant sur ces autres compiler flags:

  • Pour compiler le code C: CC, CFLAGS
  • Pour la compilation de code C++: CXX, CPPFLAGS

Et reliant les drapeaux:

  • Pour l'étape de lien: LDFLAGS
  • Après le code est compilé: LD_LIBRARY_PATH

Quel est le sens de CC, CFLAGS, CXX, et CPPFLAGS? Pourquoi ne sont-ils pas inclus dans le officiel liste des variables d'environnement pour gcc?

Ils n'ont rien à voir avec GCC. Ils sont juste une sorte de convention sur Unix, et en conséquence sont pris en charge en famille d'Unix. Je suppose qu'ils sont devenus une convention en raison de la plaine-vieux makefiles par convention tendance à s'appuyer sur ces variables. De nombreux construire des systèmes (tels que les Autotools) a adopté la présente convention trop et utilisent les mêmes variables pour désigner les mêmes choses. Pour être honnête, ces drapeaux sont de vieux tas de merde (sauf peut-être LD_LIBRARY_PATH) me rappelant de 60 à chaque fois est de les rencontrer. Si vous utilisez un moderne à construire (ce qui devrait être), vous pouvez les oublier.
LD_LIBRARY_PATH est utilisé pour souligner les répertoires dans lesquels les bibliothèques partagées résident de sorte que les applications s'appuyant sur ces bibliothèques partagées puissent être correctement relié (dynamiquement) contre eux. Comme vous pouvez le voir à nouveau se rapporte pas au développement de logiciels et de ne pas GCC, mais est plutôt une fonctionnalité/concept de la façon dont Unix famille poignées de liaison dynamique, les chemins d'installation de composants logiciels, et de leur exécution. Si vous êtes satisfait avec ces commentaires, je peut les formuler une réponse. N'hésitez pas à demander plus.
Oui @Haroogan. Vous êtes invités à formuler cela comme une réponse, puisque c'est déjà très instructif. Vous ne savez pas si je vais accepter quoi que ce soit encore depuis que je voudrais donner le fil un certain temps pour recueillir les réponses.

OriginalL'auteur Amelio Vazquez-Reina | 2013-04-16