当前位置: 首页 > 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.jsqmd.com/news/103226/

相关文章:

  • 19、Libtool库版本控制与运行时动态链接详解
  • 16、Automake 高级特性与使用指南
  • 17、自动化构建与共享库:原理、应用与挑战
  • 如何用EmotiVoice制作节日问候语音卡片?创意玩法
  • EmotiVoice在社交APP中实现个性化消息朗读
  • 25、全面掌握 Linux 系统维护与管理
  • 21、UNIX和Linux中的Vi命令与Awk工具入门
  • 22、深入探索 Awk:功能、应用与实践
  • 23、UNIX/Linux 编程:Awk 与 Perl 实战指南
  • 19、UNIX高级编程与正则表达式实用指南
  • 17、高级 shell 编程指南
  • 15、UNIX和Linux基础与进阶:从简单操作到高级脚本编程
  • 16、UNIX和Linux基础操作与脚本编写指南
  • 【课程设计/毕业设计】基于javaweb的宠物托管系统宠物寄养服务【附源码、数据库、万字文档】
  • 【课程设计/毕业设计】基于javaWEB的餐厅后勤管理系统的设计与实现基于javaWEB的餐厅后勤食材管理系统的设计与实现【附源码、数据库、万字文档】
  • 【课程设计/毕业设计】基于Java的仓库管理系统设计与实现基于Java企业仓储管理系统详细设计和实现【附源码、数据库、万字文档】
  • 【课程设计/毕业设计】基于springboot+vue的畅销图书推荐系统的设计与实现基于java的畅销图书推荐系统【附源码、数据库、万字文档】
  • 【课程设计/毕业设计】基于Java+SpringBoot+Vue求职招聘系统设计与实现基于JavaWeb的心聘求职平台的设计与实现【附源码、数据库、万字文档】
  • 【课程设计/毕业设计】基于javaweb的自习室座位管理系统自习室预订座位管理分析与实现【附源码、数据库、万字文档】
  • Java计算机毕设之基于java的畅销图书推荐系统基于Java+SpringBoot+Vue的畅销图书推荐系统(完整前后端代码+说明文档+LW,调试定制等)
  • Java计算机毕设之基于Java的仓库管理系统设计与实现基于JavaWeb的智能仓库管理系统设计与实现(完整前后端代码+说明文档+LW,调试定制等)
  • 【课程设计/毕业设计】基于SpringBoot+Vue的家装一体化平台基于JavaWeb的家装一体化平台【附源码、数据库、万字文档】
  • 19、深入探索Shell编程:整数运算、数组与排序算法
  • 12.16 国内外互联网技术热点 TOP3 及开发者指南(无代码商业应用破 50 万)
  • 17、Bash 脚本中的流程控制与命令行选项处理
  • 如何下载b站视频到本地(b站视频本地化指南)
  • 35、深入探索编程与系统操作的核心知识
  • 32、各类Shell及相关信息介绍
  • 33、Bash 编程:内置变量、测试运算符及相关选项详解
  • 29、Bash管理与安全:深入解析