gcc基础使用
- 预处理
gcc -E test.c -o test.i
- 编译
gcc -S test.i -o test.s
- 汇编
gcc -c test.s -o test.o
- 链接
gcc test.o -o test
常见的一些参数选项
(默认情况下,gcc会在系统默认的情况下寻找所需要的库文件,有了-L选项,首先到-L指定的目录中寻找,然后才到系统默认的路径中寻找)
Linux库的创建和使用
静态库和动态库的载入顺序是不一样的,静态库是在编译时就拷贝到应用程序中,节省编译时间;动态库则是在程序开始运行后调用库函数才能被载入
创建静态库的步骤
- 在一个头文件中生命静态库所导出的函数
- 在一个源文件中实现静态库所导出的函数
- 编译源文件,生成可执行代码
- 将可执行代码所在的目标文件加入到某个静态库中,并将静态库拷贝到系统默认的存放库文件的目录下
ar命令的基础使用
静态库的使用
1、在调用库文件的test.c源文件中,引用需要的头文件
2、编译的时候采用以下方式
动态库的创建和使用
编译时加上-shared,所生成的可执行程序就是动态链接库
使用动态库的两种方式
1、通过gcc的命令调用
2、通过调用系统函数来使用
-l,后面既可以带静态库,也可以带动态库,两者都不需要前缀和后缀
GDB调试器基础
gdb调试的是可执行文件,要使得一个可执行文件可以被gdb调试,需要在编译器编译的时候加入-g选项
gcc -g test.c -o test
1、启动和退出
gdb 程序文件名
gdb file 程序文件名
quit
2、显示和查找程序源代码
3、执行程序和获得帮助
gdb -q test 或者 file test只是装入程序,程序并没有执行
运行:run
4、设置和管理断点
在程序执行中,在某个函数或者某个条件下暂停下来,以查看变量的值和表达式的值
4.1以行号设置断点
break 7
4.2 以函数名设置断点
break get_sum
4.3 以条件表达式设置断点
break 行号或者函数名get_sum if 条件
4.4 以表达式设置断点(需注意表达式的变量在使用前是已经定义过的)
watch 条件表达式
4.5查看当前设置的中断点
info breakpoints
4.6 使得中断失效或有效(只是暂时的失效,但还是留在当前的可执行文件中)
disable 断点编号
enable 断点编号
4.7 删除断点
5、查看和设置变量的值
6、控制程序执行
continue:让程序继续运行,直到下一个断点或者运行完为止
kill:结束当前程序的调试
next和step命令