WIN的二进制可执行文件与Linux不相通,需要重新编译
GCC
GCC将源码程序转变为可执行程序的过程分为4个相互关联的步骤:
1.预处理(预编译)
2.编译
3.汇编
4.链接
GCC首先调用cpp进行预处理,对源代码文件的include\define进行宏替换处理
接着调用ccl进行编译,生成以.o为后缀的目标文件;
汇编过程是针对源代码中汇编语言代码的步骤,调用as将以.S和.s后缀的汇编语言源代码文件进行汇编后生成.o为后缀的目标文件;
当所有的目标文件都生成以后,GCC就调用ld来完成链接
//GCC通过文件名后缀来区分文件
.c C语言源程序文件
.a 由目标文件构成的档案库文件
.C或.cc或.cxx c++源程序文件
.h 头文件
.i 已预处理过的C源程序文件
.ii 已经与预处理过的C++源程序文件
.m ObjectC源程序文件
.o 编译后的目标文件
.s 汇编语言源程序文件
.S 已经预处理过的汇编语言源程序文件
GCC的使用
-c 编译生成为.o为后缀的目标文件
-o 该参数后面要更生成的可执行文件的名称
-g 生成调试工具(GUN的GDB)所需要的符号信息
-O 对编译\链接过程进行优化
-O2 比上面更好的优化,速度慢
-E 仅做预处理,处理结果再显示器输出
-M 输出文件之间的依赖关系
-MM 输出文件之间的依赖关系,但是不包括头文件
-S 编译到汇编语言
-Wall 编译时显示警告信息
...
GDB
GDB是GUN发布的一个功能强大的调试工具.
源程序在用GCC编译时如果加上参数"-g",生成的可执行文件就可以使用GDB进行调试测试.
GDB在调试执行某个程序时,可以设置多个断电,当程序执行到断点处,便会自动停下来,显示将要执行的语句编号和语句,用户此时可以通过显示指定变量的值\改变指定变量的值\调试执行指定函数等手段观察执行过程中变量的变化情况.然后选择程序继续执行到下一个断点处,也可以逐条语句执行.调试执行过程中,可以改变程序中断点的设置.
gcc -g xx.c
gdb xx.out
即可
叨叨几句... NOTHING