五.程序调试和静态库和共享库

五.程序调试和库文件

一. 程序调试GDB

编译程序时加 -g

gcc -o main main.c -g

执行时加 gdb

gdb main

GDB常用命令:

  • 显示代码
    1. l,显示代码。
    2. l n,显示第n行代码。
    3. l add.c:n,显示add.c的第n行。
  • 加断点 b
    1. b n,在第n行加断电。
    2. b add,任何地方遇见add函数就中断。
  • 删除断点 delete n,删除第n个断点。
  • 查看断点信息 info break
  • 继续执行 c,直到遇见下一个断点。
  • 运行程序 r
  • 单步执行 n
  • 进入函数 s
  • 跳出函数 finish
  • 打印 p,p &num,打印num地址。
  • 退出 q
  • 跟踪子进程 set follow-fork-mode child
二. 库文件

程序会默认在lib下查找函数,其余地方需要手动设置。

可执行程序(命令) /usr/bin

头文件 /usr/include

库文件 /usr/lib

三. 静态库

在链接的时候将库的信息链接入可执行程序。

libxx.a

  • ar 生成静态库

  • c 创建库

  • r 将方法添加到库里面

  • v 显示过程

  1. 生成静态库
//生成静态库,foo为静态库名称
//ar crv -o libxx.a xx.o xx.o ..
ar crv -o libfoo.a add.o max.o
  • -L路径
  • -l库名
  1. 链接静态库
//使用静态库
//在链接时指定可以去foo文件寻找函数
gcc -o main main.c -L. -lfoo
四. 共享库

共享库在链接时不能直接链接入可执行程序,只是在可执行程序内进行标记,需要放到lib文件夹下才能在运行时进行查找。

ldd:查看使用了什么共享库

libxx.so

  1. 生成共享库
//生成共享库
//gcc -shared -fPIC -o libxx.so x.o xx.o xxx.c...
//.c 文件会编译后链接
gcc -shared -fPIC -o libfoo.so add.o max.o
  • -L路径
  • -l库名
  1. 链接共享库
//使用共享库
//在链接时指定可以去foo文件寻找函数
gcc -o main main.c -L. -lfoo
  1. 移动共享库至/lib
//./main会出错
//需要将libfoo.so移动到/usr/lib下再运行
//管理员权限下
mv libfoo.su /usr/lib
./main
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值