背景

最近在项目中加载内核模块和动态库时,都遇到加载失败情况。后发现都是依赖关系问题,在此记录此类问题的解决方法。

一、查看内核模块依赖关系

使用insmod加载内核模块时,报以下错误:

/ # insmod a.ko
insmod: ERROR: could not insert module ./a.ko: Unknown symbol in module

环境缺少模块依赖,使用modinfo查看依赖:

/ # modinfo ./a.ko
filename:       /home/admin/./a.ko
description:    Common API for compressed memory storage
author:         ************
license:        GPL
depends:        libphy
retpoline:      Y
name:           a
vermagic:       4.19.0-12-2-amd64 SMP mod_unload modversions

depends: libphy 可以看出依赖libphy。先加载libphy,再加载内核模块,可正常加载。

/ # modprobe libphy
/ # insmod ./a.ko

二、查看动态库依赖关系

有一动态编译工具eeupdate64e,将工具拷贝到环境上无法使用,报-/bin/sh:eeupdate64e not found 问题。
确定已经给工具赋予了可执行权限,说明不是权限问题。
查看工具依赖的动态库:

方法一:
/ # ldd eeupdate64e linux-vdso.so.1 (0x00007ffc38ff1000)librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f2e7f429000)libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f2e7f20a000)libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f2e7ee19000)/lib64/ld-linux-x86-64.so.2 (0x00007f2e800c5000)
方法二:
/ # readelf -d eeupdate64e
Dynamic section at offset 0x30e9e0 contains 30 entries:Tag        Type                         Name/Value0x0000000000000001 (NEEDED)             Shared library: [librt.so.1]0x0000000000000001 (NEEDED)             Shared library: [libpthread.so.0]0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]0x000000000000000c (INIT)               0x160800x000000000000000d (FINI)               0x2235640x0000000000000019 (INIT_ARRAY)         0x50e6680x000000000000001b (INIT_ARRAYSZ)       8 (bytes)0x000000000000001a (FINI_ARRAY)         0x50e670..............

使用ldd eeupdate64ereadelf -d eeupdate64e 命令均可查看工具eeupdate64e依赖的动态库。
结果显示,工具依赖librt.so.1 libpthread.so.0 libc.so.6三个动态库,从编译链中拷贝相应的动态库到/lib目录下即可。

查看内核模块依赖关系和动态库依赖关系相关推荐

  1. linux命令之查看程序动态库依赖-ldd

    一个程序依赖很多的动态库,类似windows下的depends工具可以查看exe程序的依赖库是否找到.在linux下,可以通过ldd命令查看程序是否能找到依赖的动态库,从而排查是缺少库还是由于环境变量 ...

  2. Windows下查看exe可执行程序或dll动态库所依赖dll动态库的方法

    Windows下查看exe可执行程序或dll动态库所依赖dll动态库的方法 如需转载请标明出处:http://blog.csdn.net/itas109 技术交流:129518033 文章目录 Win ...

  3. linux下编译自己的静态库时依赖其他的动态库,使用时出现“undefined reference to”

    对于我这个刚入IT行业不就得新手来说,在linux下链接库的时候总是会遇到各种各样奇葩的问题,最多的就是"undefined reference to"和"cannot ...

  4. linux命令之查看进程运行动态库依赖及打开文件-lsof

    ldd命令可以看到程序依赖库,但是有的动态库是使用dlopen接口隐式加载的方式加载起来的,这个时候使用ldd命令是看不见的. 不过有另一个命令lsof,lsof命令可以看见运行中的进程加载了哪些动态 ...

  5. 查看linux下程序或者动态库到底依赖哪些so动态库以及对应的版本

    一. ldd命令 基本上每一个linux 程序都至少会有一个动态库,查看某个程序使用了那些动态库,使用ldd命令查看 # ldd /bin/ls linux-vdso.so.1 => (0x00 ...

  6. Linux动态库的动态加载与静态加载以及加载依赖了其他动态库的动态库

    Linux动态库加载 在Linux下,动态库格式一般为libxxx.so或者libxxx.so.3这种格式. 通常我们在网上下载下来源码包,编译之后会是libxxx.so软连接libxxx.so.1链 ...

  7. Mac查看Android动态库依赖

    aarch64-linux-android-readelf -d *.so 该命令位于目录:Users/admin/Library/Android/sdk/ndk/21.3.6528147/toolc ...

  8. linux动态库查找路径以及依赖关系梳理

    编译时与运行时库的路径 linux下,编译时与运行时库的搜索路径是不同的 运行时动态库的路径搜索顺序 LD_PRELOAD环境变量,一般用于hack 编译目标代码时指定的动态库搜索路径(指的是用 -w ...

  9. 杂学第十三篇:内网centos7安装软件或者其他动态库的依赖,本文章以安装openoffice为例(包含解决思路,可能适用其他系统)

    需求 本来内网安装openoffice是很简单的事,解压,安装rpm文件就行,但是麻烦的是openoffice的运行环境,提示缺少库无法启动.如果你安装的机器比较新,毕竟装系统的时候并不会把所有动态依 ...

最新文章

  1. linux bash shell for 循环使用简介
  2. Linux如何让命令提示符显示完整的路径
  3. explain 之 id
  4. 反垃圾邮件,需要全面了解各种方案
  5. TeaDSL:支持任意 OpenAPI 网关的多语言 SDK 方案
  6. python绘制三维图散点图_python matplotlib模块——绘制三维图形、三维数据散点图...
  7. 在将varchar值id转换为int时失败_MySQL令人咋舌的隐式转换
  8. axure插件怎么用_CAD插件不会用怎么行?CAD插件大全合集,超实用绘图软件,高效...
  9. DRP:基本环境安装中遇到那些事儿
  10. HTML5+Activex+Singr+ABP+MongoDB
  11. python12306抢票_Python实例--12306的抢票功能
  12. iOS 开发 code sign 代码签名深入剖析
  13. 集体的智慧:为什么SaaS打败企业软件?
  14. KEAZ128 时钟配置
  15. python绘制动态图形_让Python绘制一套动态图形给你看看
  16. [蓝牙] 1、蓝牙核心技术了解(蓝牙协议、架构、硬件和软件笔记)
  17. Logstash:你喜欢 Grok 吗?
  18. 海康摄像头直播视频上传到流媒体服务器平台后如何降低延迟?(附TCP及UDP区别介绍)
  19. 品味澳洲人民的“快乐人生”
  20. Cadence Sigrity仿真工具简介及案例演示

热门文章

  1. 判断字符串是否相等StringUtils.equals和String.equals
  2. circos 染色体进阶技巧
  3. 前端使用js读取文件
  4. xp系统中提示文件WINDOWS\SYSTEM32\CONFIG\SYSTEM缺失问题的解决方法
  5. STM32f103+protues仿真(一) 点亮led
  6. android 高德地图卡顿,【报Bug】快速反复缩放地图会卡死(plus.maps)
  7. ic卡写卡 angus_使用Angus更快地构建Web应用程序
  8. SCI论文的类型以及写作结构分析
  9. 实战|应急响应之某公司的粗心导致网站被恶意篡改
  10. Python怎么启动打开Windows的应用程序