gcc除了具备基本的c文件编译功能外,还把其它工具的功能也集成了进来,比如as的汇编功能,ld的链接功能。
因此,gcc也可以通过-Wa, option,将option传给汇编器as;也可以通过-Wl, option,将option传给链接器ld。
-N,gcc手册中没看到该选项,这是属于链接器ld的选项,gcc并没有。该选项用于将text设为writable,见后面ld部分介绍。
-L,gcc手册中只有-Ldir用来设置搜索库文件的目录,单独用-L没看该选项
基本选项
-S,大写
Compile only; do not assemble or link,输出汇编文件.s
-c,小写
Compile and assemble, but do not link.
如果不加-c,那么gcc会直接编译+链接为可执行文件。
-o <file>
Place the output into <file>
-v
Print (on standard error output) the commands executed to run the stages of compilation. Also print the version number of the compiler driver program and of the preprocessor and the compiler proper. 下面为一个例子:
sparc-elf-gcc.exe -v -c ../src/main.c -o ../obj/main.o Reading specs from /cygdrive/c/SPE-C2.5/bin/../lib/gcc-lib/sparc-elf/3.2.3/specs Configured with: ../gcc-3.2.3/configure --target=sparc-elf --prefix=/opt/sparc-elf-3.2.3 --with-gnu-as --with-gnu-ld --verbose --enable-languages=c,c++ --disable-shared --disable-nls --with-cpu=leon Thread model: single gcc version 3.2.3 /cygdrive/c/SPE-C2.5/bin/../lib/gcc-lib/sparc-elf/3.2.3/cc1.exe -lang-c -v -iprefix /cygdrive/c/SPE-C2.5/bin/../lib/gcc-lib/sparc-elf/3.2.3/ -D__GNUC__=3 -D__GNUC_MINOR__=2 -D__GNUC_PATCHLEVEL__=3 -D__GXX_ABI_VERSION=102 -Dsparc -D__elf__ -D__sparc__ -D__elf__ -D__sparc -D__NO_INLINE__ -D__STDC_HOSTED__=1 -D__GCC_NEW_VARARGS__ -Acpu=sparc -Amachine=sparc ../src/main.c -quiet -dumpbase main.c -version -o /cygdrive/c/user/default/AppData/Local/Temp/ccuy9Z2h.s GNU CPP version 3.2.3 (cpplib) (sparc ELF) GNU C version 3.2.3 (sparc-elf) compiled by GNU C version 3.4.4 (cygming special) (gdc 0.12, using dmd 0.125). ignoring nonexistent directory "/cygdrive/c/SPE-C2.5/sparc-elf/sys-include" ignoring nonexistent directory "/opt/sparc-elf-3.2.3/include" ignoring nonexistent directory "/opt/sparc-elf-3.2.3/lib/gcc-lib/sparc-elf/3.2.3/include" ignoring nonexistent directory "/opt/sparc-elf-3.2.3/lib/gcc-lib/sparc-elf/3.2.3/../../../../sparc-elf/sys-include" ignoring nonexistent directory "/opt/sparc-elf-3.2.3/lib/gcc-lib/sparc-elf/3.2.3/../../../../sparc-elf/include" #include "..." search starts here: #include <...> search starts here: /cygdrive/c/SPE-C2.5/lib/gcc-lib/sparc-elf/3.2.3/include /cygdrive/c/SPE-C2.5/sparc-elf/include End of search list. /cygdrive/c/SPE-C2.5/bin/../lib/gcc-lib/sparc-elf/3.2.3/../../../../sparc-elf/bin/as.exe --traditional-format -V -Qy -s -o ../obj/main.o /cygdrive/c/user/default/AppData/Local/Temp/ccuy9Z2h.s GNU assembler version 2.13.2.1 (sparc-elf) using BFD version 2.13.2.1