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

18、动态链接与Libtool使用指南

动态链接与Libtool使用指南

1. 手动动态链接

在程序运行时手动管理动态链接时,链接器不会参与其中,程序也不会直接调用导出的共享库函数。而是通过程序在运行时填充的函数指针来引用共享库函数。具体步骤如下:
1. 程序调用操作系统函数dlopen,将共享库手动加载到自己的进程地址空间,该函数返回一个句柄,代表已加载的库。
2. 程序调用另一个加载器函数dlsym,从句柄所引用的库中导入一个符号。
3. 若一切顺利,操作系统会从所需库中返回请求的函数或数据项的地址,程序可通过该指针调用函数或访问全局数据项。

若在此过程中出现问题,如符号未在库中找到或库未找到,程序需自行定义结果,例如显示错误消息。手动动态链接比自动动态运行时链接更灵活,应用程序能更优雅地处理问题,但程序员需在应用代码中管理库加载和符号导入过程。

2. Libtool简介

Libtool项目由Gordon Matzigkeit于1996年启动,其目的是扩展Automake,也可在手动编写的makefile中独立使用。目前由Bob Friesenhahn、Peter O’Gorman、Gary Vaughan和Ralf Wildenhues维护,最新版本是2.2.6。

3. Libtool在构建过程中的作用
  • 抽象构建过程:Libtool提供ltmain.sh脚本,config.status在支持Libtool的项目中会使用该脚本。 <
http://www.gsyq.cn/news/114026.html

相关文章:

  • 16、Automake 高级特性与使用指南
  • 17、自动化构建与共享库:原理、应用与挑战
  • 如何用EmotiVoice制作节日问候语音卡片?创意玩法
  • 21、UNIX和Linux中的Vi命令与Awk工具入门
  • 17、高级 shell 编程指南
  • 15、UNIX和Linux基础与进阶:从简单操作到高级脚本编程
  • 【课程设计/毕业设计】基于javaweb的宠物托管系统宠物寄养服务【附源码、数据库、万字文档】
  • 【课程设计/毕业设计】基于javaWEB的餐厅后勤管理系统的设计与实现基于javaWEB的餐厅后勤食材管理系统的设计与实现【附源码、数据库、万字文档】
  • 【课程设计/毕业设计】基于springboot+vue的畅销图书推荐系统的设计与实现基于java的畅销图书推荐系统【附源码、数据库、万字文档】
  • 【课程设计/毕业设计】基于Java+SpringBoot+Vue求职招聘系统设计与实现基于JavaWeb的心聘求职平台的设计与实现【附源码、数据库、万字文档】
  • 【课程设计/毕业设计】基于javaweb的自习室座位管理系统自习室预订座位管理分析与实现【附源码、数据库、万字文档】
  • Java计算机毕设之基于java的畅销图书推荐系统基于Java+SpringBoot+Vue的畅销图书推荐系统(完整前后端代码+说明文档+LW,调试定制等)
  • 17、Bash 脚本中的流程控制与命令行选项处理
  • 35、深入探索编程与系统操作的核心知识
  • 31、《Bash 实用指南:配置、使用与对比》
  • 21、深入探索Shell字符串I/O与命令行处理
  • 家长必看!近视防控误区你中了几个
  • 基于MVO多元宇宙优化的WSN网络最优节点部署算法matlab仿真
  • 6、量子计算中的门操作与随机数生成
  • 8、量子计算中的纠缠与网络基础
  • 力扣1303-求团队人数
  • 16、Linux 系统中的文件归档、压缩与加密操作指南
  • 港珠澳大桥车辆轨迹数据分析实战:从百万级数据到智能交通洞察
  • 【惯性导航解算】PSINS惯性导航解算【含Matlab源码 14719期】
  • 从400维向量到160000维矩阵:基于深度学习的火焰参数预测系统全解析
  • 如何设计一个@TenantIgnore功能,使得被该注解注解的方法可以使用户绕过自己的租户id查询全局信息(所有租户的信息)
  • windows的任务管理器中如何查看与硬盘相关的指标?
  • 如何训练自定义情感模型以扩展EmotiVoice能力?
  • EmotiVoice语音合成质量评估标准与优化建议
  • EmotiVoice语音合成缓存机制设计提升性能