다른 사람들이 언급했듯이을 gcc
사용합니다 cc1
.
호출 및 호출 되는 다른 서브 프로그램 의 정확한 방법 은 스펙 파일 형식에 의해 결정됩니다 .cc1
cpp
ld
현재 스펙 파일은 다음을 사용하여 볼 수 있습니다.
gcc -dumpspecs
관련 섹션은 다음과 같습니다.
*cc1_options:
%{pg:%{fomit-frame-pointer:%e-pg and -fomit-frame-pointer are incompatible}} %{!iplugindir*:%{fplugin*:%:find-plugindir()}} %1 %{!Q:-quiet} %{!dumpbase:-dumpbase %B} %{d*} %{m*} %{aux-info*} %{fcompare-debug-second:%:compare-debug-auxbase-opt(%b)} %{!fcompare-debug-second:%{c|S:%{o*:-auxbase-strip %*}%{!o*:-auxbase %b}}}%{!c:%{!S:-auxbase %b}} %{g*} %{O*} %{W*&pedantic*} %{w} %{std*&ansi&trigraphs} %{v:-version} %{pg:-p} %{p} %{f*} %{undef} %{Qn:-fno-ident} %{Qy:} %{-help:--help} %{-target-help:--target-help} %{-version:--version} %{-help=*:--help=%*} %{!fsyntax-only:%{S:%W{o*}%{!o*:-o %b.s}}} %{fsyntax-only:-o %j} %{-param*} %{coverage:-fprofile-arcs -ftest-coverage}
또한 다음과 함께 고유 한 사양 파일을 사용할 수 있습니다.
gcc -specs=<specs-file>
물론 GCC에 전달 된 명령 줄 옵션은 하위 프로세스 호출 방식을 간접적으로 변경합니다. 그러나 사양 파일을 조작하면 유연성이 높아지고 명령 줄 옵션으로 할 수없는 작업을 수행 할 수 있습니다 (예 : /programming/7493620/inhibit-default-library-paths-with-gcc).
다음을 통해 쉽게 실행중인 것을 관찰 할 수 있습니다.
gcc -v hello_world.c |& grep cc1
샘플 출력 :
/usr/lib/gcc/x86_64-linux-gnu/4.8/cc1 -quiet -v -imultiarch x86_64-linux-gnu hello_world.c -quiet -dumpbase hello_world.c -mtune=generic -march=x86-64 -auxbase hello_world -version -fstack-protector -Wformat -Wformat-security -o /tmp/ccvcVNAX.s