目录
第一:linuxgcc包含的c/c 编译器gcc、cc、c 、g
第二:gcc特征
第三:gcc的运行过程
第四:gcc选项
第五:gcc所遵守的部份约定规则
第一:linuxgcc包含的c/c 编译器gcc、cc、c 、g
其中gcc和cc是一样的,c 和g 是一样的,通常c语言程序就用gcc编译linux怎么用gcc编译linux怎么用gcc编译,c 程序就用g 编译。
第二:gcc特征
gcc是一个可移植的编译器,支持多种硬件平台。比如ARM、X86等等。
gcc除了是个本地编译器,它能够跨平台交叉编译。所谓的本地编译器,是指编译下来的程序只还能在本地环境进行运行。而gcc编译下来的程序才能在其他平台进行运行。
gcc有多种语言后端,用于解析不同的语言另外gcc是按模块化设计的linux vi命令,可以加入新语言和新CPU构架的支持。gcc是自由软件。任何人都可以使用或修改这个软件。
第三:gcc的运行过程
(1)在命令行输入:gcctest.c
这样会默认编译出一个名为a.out的程序,
再在命令行输入:./a.out
就可以运行程序。
(2)假如在命令行输入:gcctest.c-otest
这样将编译出一个名为test的程序
再在命令行输入:./test
就可以运行程序。
注:其中-o参数拿来指定生成程序的名子
(3)分步执行linux操作系统版本,更具体形象
其中包含4个过程:
1.预处理
本质会进行4个操作(包括头文件的展开、去掉注释、宏替换、条件编译)、
具体操作:命令行输入:gcc-Etest.c-otest.i
这句命令意思是:走完预处理第一步都会停出来,将形成的临时内容储存在test.i文件中
2.编译
本质就是把c语言弄成汇编语言
具体操作:命令行输入:gcc-Stest.i-otest.s
这句命令意思是:走完编译第二步都会停出来,将形成的临时内容储存在test.s文件中
3.汇编
本质就是把汇编语言弄成目标二补码文件(不可执行)
具体操作:命令行输入:gcc-ctest.s-otest.o
这句命令意思是:走完汇编第三步都会停出来,将形成的临时内容储存在test.o文件中
4.链接
本质就是引入我们在代码中使用的第三方库生成可执行文件或库文件
(第三方库由编译器和文件后缀共同决定)
第四:gcc选项
-E只进行预处理操作
-S编译到汇编停止(不进行汇编,只完成预处理和编译)
-c进行汇编操作(编译到汇编代码)
-O[0,1,2,3]
优化程序(默认为2级优化,0不优化,3优化级别最高)
-static对生成的文件采用静态链接
-shared尽量使用动态库
-Idir
将dir目录加入搜索头文件的目录路径
-Ldir
将dir目录加入搜索库的目录路径
-llib
联接lib库
-Wall使gcc对源文件的代码有问题的地方发出警告信息
-W不发出警告信息
-g在目标文件中生成调试信息,便于gdb之类的调试程序调试
以上是基于命令行输入的c/c++编译器运行过程的详细内容。更多信息请关注PHP中文网其他相关文章!