2012-01-24 5 views
25

Sono un novellino in clang. Ho letto un articolo sulla trasformazione da sorgente a sorgente da cuda a opencl utilizzando il front-end del compilatore clang.Cosa fa l'opzione clang -cc1?

Qualcuno può dirmi perché l'opzione -cc1 viene talvolta utilizzata? Qualsiasi aiuto sarebbe molto apprezzato in quanto potrebbe essere una domanda molto basilare.

Grazie

risposta

24

Il Clang compilatore front-end ha diverse caratteristiche specifiche aggiuntive clang che non vengono esposti tramite l'interfaccia del driver di compatibilità GCC. L'argomento -cc1 indica che il front-end del compilatore deve essere utilizzato e non il driver. La funzionalità clang -cc1 implementa la funzionalità principale del compilatore.

Quindi, semplicemente parlando. Se non si fornisce -cc1 allora ci si può aspettare il "look & feel" del GCC standard. Questa è la stragrande maggioranza delle bandiere del compilatore che funzionano esattamente come ci si aspetterebbe che funzionino con GCC. Se si passa l'opzione "-cc1", si ottiene il flag del compilatore Clang. Pertanto, potrebbero esserci differenze rispetto a GCC.

Spero che lo renda un po 'più chiaro.

8

Il solito compilatore è costituito dal cosiddetto driver del compilatore, che sa come eseguire il compilatore stesso, l'assemblatore, il linker, ecc. E il compilatore stesso che prende solo il codice sorgente (talvolta già preelaborato) ed emette il codice assembler/oggetto.

Clang implementa tutti questi componenti nel singolo binario, la differenza è solo la cmdline. Qui clang -cc1 invoca il compilatore stesso con il set di opzioni interno/non documentato, ecc.

+0

Sai del supporto per cuda in clang 3.0 ?? Non è ancora in grado di riconoscere le chiamate del kernel !! – SRINI794

+0

@srinivasprabhu, prova a chiedere alla mailing list cfe-dev –