2012-01-24 16 views
25

Jestem nowicjuszem w clang. Czytałem artykuł o transformacji źródła do źródła od cuda do opencl przy użyciu przedniego końca kompilatora clang.Co robi opcja clang -cc1?

Czy ktoś może mi powiedzieć, dlaczego czasami używana jest opcja -cc1? Każda pomoc będzie naprawdę doceniona, ponieważ może to być bardzo podstawowe pytanie.

Dziękuję

Odpowiedz

24

Clang kompilator front-end ma kilka dodatkowych dzyń szczególnych cech, które nie są narażone przez interfejs kierowcy zgodności GCC. Argument -cc1 wskazuje, że należy użyć front-endu kompilatora, a nie sterownika. Funkcja clang -cc1 implementuje funkcję głównego kompilatora.

Po prostu mówię. Jeśli nie podasz -cc1, możesz spodziewać się "wyglądu" w standardowym GCC. Oznacza to, że znaczna większość flag kompilatora działa tak, jak można oczekiwać, że będą działać z GCC. Jeśli przełączysz opcję "-cc1", wtedy ustawisz flagę kompilatora Clang. W związku z tym mogą występować różnice w stosunku do GCC.

Nadzieję, że czyni to trochę jaśniejszym.

8

Zwykły kompilator składa się z tak zwanego sterownika kompilatora, który wie, jak wykonać sam kompilator, asembler, linker itp. I sam kompilator, który pobiera kod źródłowy (czasami już wstępnie przetworzony) i emituje kod assemblera/obiektu.

Clang implementuje wszystkie te komponenty w pojedynczym binarnym, różnica jest po prostu cmdline. Tutaj clang -cc1 wywołuje sam kompilator z jego wewnętrznym/nieudokumentowanym zestawem opcji, itp.

+0

Czy wiesz o wsparciu cuda w klangu 3.0 ?? Nie rozpoznaje jeszcze wywołań jądra! – SRINI794

+0

@srinivasprabhu, spróbuj zapytać na liście mailingowej cfe-dev –