Linux笔记(11.10)

gcc 编译器(可做多文件编译)
gdb 调试器(功能调试)
make 工程管理器(多文件操作)
shell 脚本
源文件(.c)–>预处理(.i)–>编译(.o)–>链接–>可执行(.exe |.out)
gcc
-o 确定可执行文件的名称(默认a.out)
-E预处理(gcc -E hello.c -o hello.i)
-c 只编译,不生成可执行文件(生成.o的目标文件)
-S汇编代码
-O【0~3】优化
-g产生调试工具(gdb)所必需的符号信息
-D宏定义
-u删除宏定义
-I增加一个搜索头文件的目录
-I-取消搜索路径
-L增加一个搜索库文件的目录
-lm数学函数库
静态库:
1。源代码(.c)
2。生成.o目标文件(gcc -c)
3。放到库里(ar rcs[rc不存在就创建该库文件,s更新库文件])
创建库:ar rcs libname.a .o
使用库:gcc file.c -o file -L. -lname
动态库:gcc -shared -fPIC -o 库名.so +源文件.c(创建动态库)
gcc 源文件.c ./库名.so -o +可执行文件名(使用动态库)
gdb(调试系统下):
1。$ gcc -g test.c -o test 编译生成可执行文件
2。$gdb test 启动gdb
3。break (b) 设置断点
4。run (r) 运行程序
5。next(n)或回车 单步运行(不进入子函数)
6。continue (c) 继续进行
step(s)单步运行(进入子函数)
info break 查看断点
finish 运行程序,直到当前函数结束
q退出gdb模式
list(l)查看程序(只显示10行)
print§+变量 显示指定变量的值(显示的变量不会随变量改变而改变)
watch+变量 对指定变量监控(显示的变量会随变量改变而改变)
delete+断点编号(Breakpoint1。。。)删除断点
b(行号)在指定行设置断点
b(行号)if 条件(b 5 if i=10)–>当i=10时第五行断点生效
clear(行号/函数名)删除指定行/函数名断点(不加则删除所有断点)
makefire(make)工程管理器
编写规则:
1。需要由make工具创建目标体 通常是目标文件或可执行文件(第一个是终极文件)
2。要创建的目标体所依赖的文件,创建每个目标体时的命令,这一行必须以tab开头(tab是命令的引导词)
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_43603963/article/details/83934387