欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Linux下动静态编译链接以及gdb调试命令

程序员文章站 2022-06-03 08:38:40
...

windows下编写程序分动态编译和静态编译,linux下同样也分。

Linux下运行程序的步骤:

Linux下动静态编译链接以及gdb调试命令

以上就是在linux下执行程序时所做的,windows下也大同小异。


动静态链接:

动态链接:依赖于第三方库,在执行程序时,当需要库函数时,会直接进到库里去找,整个程序本身不具有需要的库,所以动态链接的缺点就是不利于移植,因为可能会因为库的原因而出错,但也有有点就是不浪费资源,生成的文件占内存小。


静态链接:它不依赖于第三方库,当执行程序时,会直接将第三方库整个加载到它程序本身,相当于绑定在一起,但是缺点就是比较的占内存,也浪费资源,但是比较好的是,移植性相对高一点,不是特别容易出错。

生成静态可执行文件命令:

gcc -o XXX-static XXX.c -static
此静态文件的大小要比同类型文件大很多,因为加载了库在其中。


动静态库:

其都会以lib开头,静态库以 <.a> 结尾,动态库以 <.so>结尾,后面都会跟上版本号。

gcc中默认为动态链接,默认为release版本


gdb调试:

list/l:显示代码,其后可以跟行号,函数名,文件名:函数名等形式

breakpoint/b:打断点,其后可以跟行号,函数名,文件名:函数名等形式

info b:查看断点

delete/d 断点编号:删除断点

run/r:运行程序,当有断点存在时,会在第一个断点处停下

next/n:单步执行程序

step/s:进入函数

P  X:查看变量的内容(X为变量)

display   X:查看常量变化的值(常显示)

undisplay 编号:取消查看

until  行号:跳转至任意行,除空格,括号除外,即有效行。

C:从一个断点跳转至另一个断点

bt:查看调用栈

finish:直接完成一个函数的调用

disable  断点编号:暂时关闭一个断点

enable  断点编号:开启一个断点

set  var :修改变量的值(例如:set  var  i=9)