linux常用库操作命令

库操作命令

查看依赖的库

eg:查看libmsc.so的依赖

  objdump -x libmsc.so | grep NEEDED

在这里插入图片描述

方式二

readelf -d iat_online_sample

查看缺少的库(或者路径)

例如查看 iat_online_sample 所依赖的库

ldd iat_online_sample

在这里插入图片描述
可以看到libmsc.so这个库没有找到

设置动态库搜索路径(指定环境变量)

当执行函数动态链接.so时,如果从文件不在缺省目录’/lib’、’/usr/lib’、‘、lib64’。那么就需要指定环境变量LD_LIBRARY_PATH

export LD_LIBRARY_PATH=./

在这里插入图片描述
这种方式重启后生效。
如果想永久有效
vim /etc/bashrc,修改其中的LD_LIBRARY_PATH变量。
例如:LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/au1200/bin。

感觉这里设置的不如 windows智能,windows首先搜索当前目录下链接库,没找到再找系统的。而linux只搜素系统的。

查看当前环境变量

显示所有

export

显示指定

echo $LD_LIBRARY_PATH

取消 环境变量的指定

unset LD_LIBRARY_PATH 

宏定义补充
LIBRARY_PATH is used by gcc before compilation to search for directories containing libraries that need to be linked to your program.
LD_LIBRARY_PATH is used by your program to search for directories containing the libraries after it has been successfully compiled and linked.

查看导出接口

nm -D libaplusb.so
objdump -tT libaplusb.so
readelf --dyn-syms libaplusb.so

在这里插入图片描述

gdb查看崩溃

程序崩溃后查看,日志。
有日志最好。
下面是我在编写freeswitch插件的时候,出现了程序崩溃。
只能这么查找了

gdb /usr/local/freeswitch/bin/freeswitch core.98832

然后输入

bt

然后就会显示程序的奔溃点
在这里插入图片描述
可以看到,最后的崩溃点在lua函数里。

linux库加载顺序

就是同名接口,
只会使用第一个加载进来的。

参考:
linux 下 动态链接库 so 之间的符号冲突
Linux不同共享库中同名函数的处理

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值