笔记(动态库 静态库 gcc gdb)

vim粘贴: p 复制整行 nyy 删除:dd ndd(多行) 恢复:u 查找:/+查找内容 或 ?+查找内容
替换:s/hello/hi 将hello替换为hi(第一个) s/hello/hi/g(替换全行) 5,10 s/hello/hi/g(5到10行) 5,10 s/hello/hi/gc (5到10行每个询问是否替换)
%s/hello/hi/g (全文) g:全行 c:询问 %:全文替换
另存为:3,12 w demo.c (3到12行另存到) r demo.c() w为写 r为读
多文件编辑:vim+多个文件 n demo.c(跳转到demo.c)n+空格+文件名 files:查看所有编辑文件 法二:底行模式下 sp+分屏显示的文件 Ctrl+w+g 下一个 Ctrl+g+w 上一个
Ctrl+n 补全检索内容

Linux开发工具
编译器gcc(编译选项、静态库和动态库的制作和使用)
gcc的特点:能过实现交叉编译 ***交叉编译:在当前CPU平台能够编译出在其他CPU平台运行的代码 不同CPU有不同的汇编
预处理 编译 汇编 链接 硬件的复杂操作用:c
预处理:头文件展开 宏替换 条件编译 预处理指令 #line #error
只进行预处理 :gcc -E 文件名 预处理不检查语法错误
gcc-S 文件名 编译阶段检查语法错误
gcc-c 生成目标文件 汇编阶段
链接:建立符号表
gcc 文件名(demo.c) -o 重命名 (demo)
gcc-w 关闭警告 gcc-wall 警告打开
库文件:保存函数和变量 只能使用 不能看到其实现 静态库:使用静态库编译程序 是在编译时加载 后缀 .a 动态库:使用动态库编译程序 是在运行时加载 后缀 .so
区别:静态库生成的程序较大 占用内存大 后者反之
Linux的库文件存放位置:/lib /usr/lib(第三方软件)
如何制作静态库: ar rcs (不存在就创建 存在即更新) ar rcs libcal.a lib 为前缀 .a为后缀 cal 为文件名 libc.a libc.so c函数库 libm.c libm.so 数学函数库 gcc hello.c -lm 调用数学函数
gcc -c add.c gcc -c sub.c
ar -rcs libcal.a add.o sub.o
./cal

  gcc main.c -lcal -L /root/0923/lib                -l(链接)     -L(指定存放位置)
 gcc main.c -lcal -L      

gcc -shared -fPIC add.c sub.c -o libcal.o
gc main.c /root/0923/libcal.so      gc main.c ./libcal.so -o cal  

调试器:gdb
三大特点:gcc -g 文件名(sum.c) -o sum 1、启动被调试的程序 (run) 2、设置断点 单步执行 (break 行号)断点 next单步执行 3、查看变量的值 printf i
quit:退出 查看源代码:gdb sum --tui layout asm (原码) layout scr layout split
断点:break+行号 info break 查看断点编号 删除断点 delete +编号 break+行号+条件 (break 17 if i=10 在17行 当i=10停下)
break +函数名(当调用函数停下 break func) diasble +断点编号(失去断点功能) enable +断点编号 (打开断点) clear +行号(清除这行断点)
运行:run:运行程序 next和step 单步执行 next :不进入程序中的子函数 step:进入子函数 continue:继续运行 直到程序结束(再次遇到断点 会停止运行)

作业:
until:
继续运行到指定位置
在一个循环体内单步跟踪时,这个命令可以运行程序直到退出循环体,可简写为u
在执行完循环体内的最后一条语句之后执行 until, 就会执行完循环体到后面的一个语句停下。

finish:
执行完当前函数
如果想让程序执行到当前函数返回之后停止,用finish,当前函数的剩余语句将会正常运行

watch:
为表达式(变量)expr设置一个观察点。当表达式值有变化时,马上停住程序。

display:
可以设置一些自动显示的变量,当程序停住时,或是在你单步跟踪时,这些变量会自动显示。相关的GDB命令是display。
display expr
display/fmt expr
display/fmt addr

expr是一个表达式,fmt表示显示的格式,addr表示内存地址,当你用display设定好了一个或多个表达式后,只要你的程序被停下来,GDB会自动显示你所设置的这些表达式的值
info display

查看display设置的自动显示的信息。
undisplay dnums…
delete display dnums…

删除自动显示,dnums意为所设置好了的自动显式的编号。
disable display dnums…
enable display dnums…
disable和enalbe不删除自动显示的设置,而只是让其失效和恢复。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值