2016-02-05 1 views
2

Je suis sur l'exercice 2 de « Apprendre C à la dure L'un des défis de crédit supplémentaires est:`man cc`:. Pas d'info sur les drapeaux et -Wall -g (En savoir C à la dure)

Lire homme cc pour en savoir plus d'informations sur ce que les drapeaux et -wall -g faire.

Je suis sur Mac OS X et utilisé man cc pour ouvrir la page de manuel, mais il ne dispose d'aucune information sur les -Wall ou -g Cependant, je me suis connecté à une machine exécutant Ubuntu et j'ai trouvé une page de manuel beaucoup plus grande pour cc qui l'a fait clude l'information. Pourquoi les pages de manuel pour OSX (Darwin?) Et Ubuntu diffèrent-elles? Je ne sais évidemment rien à propos de ce genre de choses mais j'aurais supposé que les pages de manuel seraient livrées avec le logiciel et seraient donc identiques quel que soit l'endroit où le logiciel a été installé.

+1

Vous pouvez installer gcc sur homebrew 'brew install gcc' et accéder à ses pages de manuel à la place. par exemple. 'man gcc-5'. – a3f

+0

Cela fonctionne pour moi avec les versions actuelles de OS X et Xcode - 'man cc' vous amène à la page man pour clang, et cela inclut des informations sur' -W' et '-g'. –

Répondre

3

Il est probable que votre installation OS X utilise un compilateur nommé clang et que votre installation Linux utilise un compilateur nommé gcc.

Par conséquent, les pages man sur OS X sont probablement écrites par l'équipe clang et les pages man de votre installation Linux sont probablement écrites par l'équipe gcc.

Ces deux compilateurs acceptent généralement les mêmes arguments de ligne de commande.

+0

Merci. J'avais complètement oublié que "man cc" m'amenait à une page de manuel pour "clang" sur ma machine OSX et 'gcc' sur Ubuntu. J'avais l'habitude de 'man' en prenant un nom de programme comme argument, mais il semble que' cc' pointe vers des compilateurs C différents. Est-ce correct? quand je lance 'ls -l/usr/bin/cc' sur OSX, je vois un lien symbolique vers' clang' ('/ usr/bin/cc -> clang'). Alors qu'est-ce que 'cc' représente? – sixty4bit

+0

'/ usr/bin/cc' est souvent un lien vers le compilateur c fourni par le fournisseur. –

3

Les pages de manuel de Compilers * nix ne vous donnent que les bases. Il y a trop de contrôles dans une chaîne de compilation pour vous donner tous dans les pages de manuel. Même l'option --help ne vous donnera pas tous les contrôles. clang --help (sur OSX) vous donne environ 350 lignes, mais la liste unique des contrôles d'avertissements clang est d'environ 450 ... Il est difficile de compter le nombre d'options qu'un compilateur vous offre, mais probablement des milliers ...

Pour un tel outil, je vous encourage à consulter les manuels en ligne.

Pourquoi différent? Parce que les chaînes de compilation dépendent de l'architecture/OS/ABI/Assembly/Linker, etc Ainsi, le même compilateur (gcc par exemple) peut se comporter différemment sur une plate-forme différente; les manuels devraient être différents. De toute façon, -Wall et -g sont très communs et basiques, je suis surpris que Wall n'apparaisse pas dans le manuel OSX ...