文章目录
- VIM命令思维导图
- GCC编译器
- 1、GCC编译文件练习
- 2、静态库动态库制作练习
- 将此函数编译成动态库
- 将此函数编译成静态库
- GCC优化选项 -On
- GDB调试命令练习
- 练习一:编写一个程序,通过gdb调试,使用到gdb的b,n,s,info,backtrace,p等命令。
- 练习二:练习gdb的x,bt等命令,练习定位段错误,调试core文件的步骤
使用环境:Ubuntu18.04
使用工具:VMWare workstations ,xshell
作者在学习Linux的过程中对常用的命令进行记录,通过思维导图的方式梳理知识点,并且通过xshell连接vmware中ubuntu虚拟机进行操作,并将练习的截图注解,每句话对应相应的命令,读者可以无障碍跟练。第二次练习的重点在于vim编辑器、GCC编译和GDB调试的使用。
需要提前安装VIM、GCC。
VIM命令思维导图
由于VIM命令的练习不容易截图,所以请读者自行练习VIM命令。
GCC编译器
1、GCC编译文件练习
编写一个c程序,使用GCC命令依次进行预编译,编译,汇编,链接,得到.i文件,.s文件,.o文件,和可执行文件
2、静态库动态库制作练习
编写一个做两个数减法功能的函数sub,返回值为输入的两个数的差,然后将其编译为动态库,静态库,并使用静态库和动态库,编写usefunc.c,调用通过库调用函数,得到可执行的二进制。
将此函数编译成动态库
将此函数编译成静态库
静态库和动态库的比较
1、动态库只在执行时才被链接使用,不是直接编译为可执行文件,并且一个动态库可以被多个程序使用,故可称为共享库。
2、静态库将会整合到程序中,在程序执行时不用加载静态库,所以调用静态库的速度相较于动态库会快一些。
3、因此,静态库会使你的程序臃肿并且难以升级,但比较容易部署。而动态库会使你的程序轻便易于升级但难以部署
GCC优化选项 -On
比如-O1主要进行线程跳转和延迟退栈两种优化,-O2和-O3各有其不同的优化。虽然优化可以加速代码运行速度,但是将给调试带来很大的挑战。因为代码优化后,原先在源程序中声明的变量可能不再使用,控制流也可能突然跳转到意外的地方,所有这些对调试来讲都是不好的。所以在调试的时候最好不要使用优化选项,只有在最终发布的时候才考虑将其进行优化。
GDB调试命令练习
练习一:编写一个程序,通过gdb调试,使用到gdb的b,n,s,info,backtrace,p等命令。
这上述命令要熟练使用,大多都是英文单词首字母比较好记。再补充一些其他的命令。
练习二:练习gdb的x,bt等命令,练习定位段错误,调试core文件的步骤