2010-09-24 3 views
0

Cette question peut être assez simple, mais je ne trouvez pas de réponses exactes ..Quelle est cette ligne de script shell fait

dans le script shell j'ai une ligne comme celui-ci,

export CFLAGS=" -w -Iinc/ -Isrc/" 

Je ne sais pas Qu'est-ce que ces options -w et -I font ici?

Tout ce que je sais est cette ligne comprend les répertoires inc et src

Toute aide serait grande

Répondre

2

Cela ne fait que définir une variable d'environnement. Je suppose qu'il est utilisé pour définir des drapeaux pour GCC.

De man gcc:

-I dir 
     Add the directory dir to the list of directories to be searched for 
     header files. Directories named by -I are searched before the 
     standard system include directories. If the directory dir is a 
     standard system include directory, the option is ignored to ensure 
     that the default search order for system directories and the 
     special treatment of system headers are not defeated . 

    -w Suppress all warnings, including those which GNU CPP issues by 
     default. 
0

Ils sont des arguments à votre compilateur. Si gcc, puis:

  • -w: Inhiber tous les messages d'avertissement.
  • -I: Ajoutez le répertoire dir à la liste des répertoires à rechercher pour les fichiers d'en-tête. Les répertoires nommés par '-I' sont recherchés avant les répertoires standard du système. Si le répertoire dir est un répertoire d'inclusion système standard, l'option est ignorée pour garantir que l'ordre de recherche par défaut des répertoires système et le traitement spécial des en-têtes système ne sont pas annulés (voir En-têtes système).
0

CFLAGS est le nom d'une variable d'environnement. Il prend la valeur -w -Iinc/ -Isrc/ (l'espace initial est inutile, tout comme les barres obliques, btw).

Le mécanisme de la compilation avec un compilateur C passe par le programme make. L'utilitaire make par défaut utilise cette règle pour compiler un programme C à un fichier objet:

.c.o: 
    $(CC) $(CFLAGS) -c $< 

et importe la variable make$(CFLAGS) de la variable d'environnement$CFLAGS (ils sont distincts , ne confondez pas " em).

Vous pouvez lire tout sur make des variables, des règles et de leurs valeurs par défaut sur http://pubs.opengroup.org/onlinepubs/9699919799/utilities/make.html

Pour l'illumination, essayez ceci: créer un videMakefile, placez le helloworld.c familier dans le même répertoire et tapez make helloworld. Ce qui se produit? Pourquoi? Si vous comprenez cela, vous avez fait un pas de géant vers devenir un gourou make :-)