当前位置: 首页 > news >正文

程序链接和运行 - 笔记

1 linux下程序a连接b.so后,运行时如何找到调用的函数

在Linux下,当程序A连接了动态链接库B(.so文件)后,在运行时,程序A会使用动态链接器(dynamic linker)来解析并加载动态链接库B中的函数。动态链接器会在系统中搜索动态链接库,并将它们加载到程序的地址空间中。

当程序A调用动态链接库B中的函数时,动态链接器会根据函数名和库文件中的符号表找到相应的函数,并将调用重定向到正确的函数地址。

具体来说,动态链接器会首先搜索程序A指定的动态链接库搜索路径,通常包括默认的系统路径(比如 /lib/usr/lib 等),以及程序A指定的其他路径。然后,它会加载找到的动态链接库,并解析其中的符号表,以建立函数名到函数地址的映射关系。

如果动态链接库B依赖于其他动态链接库,动态链接器还会递归地加载并解析这些依赖的库。

总之,程序A在运行时会通过动态链接器来查找和调用连接的动态链接库B中的函数,而动态链接器会负责管理动态链接库的加载和符号解析过程。

2  编译链接后程序a还有fun()函数吗?

一般情况下,如果程序A在编译链接时确实调用了动态链接库B中的函数(比如 fun() 函数),那么在

http://www.lryc.cn/news/346967.html

相关文章:

  • pyqt 按钮常用格式Qss设置
  • websevere服务器从零搭建到上线(一)|阻塞、非阻塞、同步、异步
  • 【C++】引用传递 常量引用
  • Docker停止不了
  • 【网络】为什么TCP需要四次挥手?
  • 2024自动化测试市场分析
  • 什么是机器视觉应用解决方案?
  • 使用 scrapyd 部署 scrapy
  • Python计算器程序代码
  • 图像分割各种算子算法-可直接使用(Canny、Roberts、Sobel)
  • Spring Boot进阶 - 实现自动装配原理
  • 面向电商家居行业3D室内场景合成中的空间感知
  • ERROR 1045 (28000) Access denied for user ‘root‘@‘IP‘(using password YES/NO)
  • verilog $test$plusargs和$value$plusargs
  • Linux设置open files
  • Linux下安装JDK并配置环境变量
  • 擎天科技与禅道合作,打造统一的项目管理平台
  • ansible报错解决:Failed to import the required Python library (netaddr)
  • 盛邦安全拟战略收购卫星通信加密厂商天御云安
  • iOS MRC那句话
  • macOS DOSBox 汇编环境搭建
  • Python深度学习基于Tensorflow(1)Numpy基础
  • 体验GM CHM Reader Pro,享受高效阅读
  • 校园网拨号上网环境下多开虚拟机,实现宿主机与虚拟机互通,并访问外部网络
  • cpu常用命令
  • Vue3实战笔记(06)--- Axios 基本用法
  • 使用单片机在图形点阵LCD上绘制波形图
  • 生信人写程序1. Perl语言模板及配置
  • 【Android】Kotlin学习之数据容器 -- 集合
  • 超详细 springboot 整合 Mock 进行单元测试!本文带你搞清楚!