这个是编译器,进行相关的东西。这个是开源的编译器,进行c与c++进行编译。
进行的过程:
1, 预处理
2,汇编
3,链接
gcc -E进行预处理重定义一个输出文件里面。
通过预处理之后的经过
gcc -E main.c -o main.i
生成相关的.i的文件,变成相关的东西。
gcc -c main.s -o main.o
汇编生成main.o文件内容,可以直接预处理语言变成汇编。
gcc -c main.c -o main.o
直接生成.o文件。
gcc main.o -o main
生成main文件,变成相应的东西。
在编译链接时,库文件不同处理方法,分别不同的静态库与动态库
静态库是指编译链接时,把库文件的代码全部加入到可执行文件中,因此生成的文件比较大,但在运行时也就不再需要库文件了。其后缀名一般为“.a”
没有将库放在可执行程序之中,运行过程之中进行动态提取库文件。
节省空间与开销在系统上面,动态库后缀名为“.so”.
gdb的使用,基本上使用release模式相关的东西。基本的东西使用方法与调试相同,只是用简单的代码进行调节,不是之前的步骤进行相关的操作。(Xcode也可以进行相关的操作)
通过gcc反应之后得到了相关的可执行程序,然后
gdb test //test可执行程序
1,b (break)+ 行号:打断点
2,d(delete) + 断点编号:删除断点
3,l + 行号:显示代码
4,s(step):逐语句(进入函数)
5,n(next):逐过程
6,display && undisplay:行显示或者取消常显示
7,until + 行号 :跳转到指定行
8,r(run):运行程序
9,c(continue):从一个断点到下一个断点
10,finish:执行完成一个两数就停下*!
11, j(jump) + 行号:跳到指定行
12,k(kill):终止程序运行
13,i(info) : 查看当前栈帧局部变量的值