gcc学习笔记

    技术2022-05-20  48

    The History of GCC

         1984年,Richard Stallman发起了自由软件运动,GNU (Gnu’s Not Unix)项目应运而生,3年后,最初版的GCC横空出世,成为第一款可移植、可优化、支持ANSI C的开源C编译器。 G4' I a $      GCC最初的全名是GNU C Compiler,之后,随着GCC支持的语言越来越多,它的名称变成了GNU Compiler Collection。 4Kch=jt4#      gcc: GCC的前端,C编译器. 0Fb ];:a Zp)= l Td 常用选项

    (1)警告信息     & : l-; 7d      -Wall : 显示所有常用的编译警告信息。 ) '~Jsg-      -W     : 显示更多的常用编译警告,如:变量未使用、一些逻辑错误。 7( 1`,Y      -Wconversion : 警告隐式类型转换。 B h& pZcm|      -Wshadow : 警告影子变量(在代码块中再次声明已声明的变量) J- S .m(      -Wcast-qual :警告指针修改了变量的修饰符。如:指针修改const变量。 w*6b%h%w w      -Wwrite-strings : 警告修改const字符串。 qf( mJ lU      -Wtraditional : 警告ANSI编译器与传统C编译器有不同的解释。 h iS|& 5 #      -Werror : 即使只有警告信息,也不编译。(gcc默认:若只有警告信息,则进行编译,若有错误信息,则不编译) F(hPF6Zx( uHI( - ! O (2)C语言标准 ! ek By D      默认情况下,gcc使用GNU C扩展。 t s~ VO`      -ansi : 关闭GNU扩展中与ANSI C相抵触的部分。 ' o IE:#b      -pedantic : 关闭所有的GNU扩展。 * 5PQ>d G      -std=c89 : 遵循C89标准 z}Cj k6z@      -std=c99 : 遵循C99标准 +S{ m!j%B      注意:后三个选项可以与-ansi结合使用,也可以单独使用。 h-PJ C /> O H>.N"IG (3) 生成特定格式的文件 C?|sQc CE      以hello.c为例子,可以设置选项生成hello.i, hello.s, hello.o以及最终的hello文件: 7;p/S #P : ---- ;[ QIHA!      hello.c : 最初的源代码文件; g R !h N.I      hello.i : 经过编译预处理的源代码; _kBm KE      hello.s : 汇编处理后的汇编代码; ,$!fyi[;C      hello.o : 编译后的目标文件,即含有最终编译出的机器码,但它里面所引用的其他文件中函数的内存位置尚未定义。 ^N7c X K*      hello / a.out : 最终的可执行文件 #.u &2eyqQ ---- ~Q"qz<W O      $ gcc -Wall -c hello.c               : 生成hello.o D B y%"/c      $ gcc -Wall -c -save-temps hello.c   : 生成hello.i, hello.s, hello.o 6a9: P@tY      注意-Wall 和 -o选项的使用场合: KD/

    转载请注明原文地址: https://ibbs.8miu.com/read-2225542.html

    最新回复(0)