libtool(通用库拥穿着脚本) 242 免费版

  libtool可以扶植您接合多种程序的用库拥穿开发通道,该程序拥穿着的着脚数据类型是非常广泛的  ,在以前,本 版编程人员想要利用共享库的免费优势来落成源代码的开发,需要建立不同的用库拥穿通道来拥穿着代码运行的环境,同时需要设置对应的着脚配置接口才能很好的落成源代码的开发,有了libtool以后,本 版就可以将以上的免费尴尬全部简化,该软件能欧根据不同的用库拥穿主机类型设置兼容的通用接口 ,建立各种类型的着脚源代码包共享库 ,从而简化了操作的本 版流程 ,利用通用的免费接口设计程序 ,极大的用库拥穿节省了源代码包的开发时间  。

软件功能

  该libtool程序有以下概要 :

  libtool [ option ] ... [ mode-arg ] ...

  并收受以下选项 :

  --config

  显示libtool配置变量并退出。着脚

  --debug

  将一个shell脚本执行的本 版跟踪转储到标准输出。这会裸露大量输出 ,因此您可能希校验将其传递到less(或 more)或重定向到文件  。

  -n

  - 干运行

  不要创建,修改或删除任何文件 ,只显示libtool将执行什么命令 。

  - 特征

  显示基本配置选项。这为包提供了一种确定是否将构建共享或静态库的计划 。

  与...一样 --mode = finish。-H

  显示简短扶植消息。

  显示扶植消息并退出 。如果--mode = mode ,则显示模式的详细扶植。

  --help-all

  显示常规选项的扶植以及每种操作模式的详细扶植 ,然后退出。

  --mode = mode

  使用模式作为操作模式 。当从命令行使用libtool时 ,你可以给模式(或其唯一的缩写)作为第一个参数作为完整的 --mode = mode 。

  编译

  将源文件编译为libtool对象 。

  执行

  自动设置库路径 ,以便另一个程序可以使用卸载的libtool裸露的程序或库 。

  链接

  创建库或可执行文件。

  安装

  安装库或可执行文件。

  完

  在系统上落成libtool库的安装  。

  卸载

  删除已安装的库或可执行文件。

  清洁

  删除已卸载的库或可执行文件 。

软件特色

  • 编译模式 : 创建库对象文件。

  • 链接模式: 裸露可执行文件和库。

  • 执行模式: 调试libtool裸露的程序 。

  • 安装模式 : 使图书馆和可执行文件公开 。

  • 落成模式 : 落成库安装。

  • 卸载模式 : 删除已安装的可执行文件和库 。

  • 清洁模式 : 删除卸载的可执行文件和库。

  创建对象文件: 编译库的目标文件 。

  • 链接库: 从对象文件创建库 。

  • 链接可执行文件 : 将对象文件链接到libtool库。

  • 调试可执行文件 : 在libtool裸露的程序上运行GDB。

  • 安装库: 使库可供用户使用 。

  • 安装可执行文件: 向用户提供程序。

  • 静态库: 当不需要共享库 。

使用计划

  要从源文件创建目标文件 ,将使用调用编译器 -C 标志(和任何其他所需的标志)  :

  上面的编译器命令裸露一个目标文件,通常命名为 main.o ,从源文件 main.c 。

  对于大多数库系统,创建成为静态库一部分的对象文件与创建链接形成可执行文件的对象文件一样简易:

  然而 ,共享库只能从位置无关代码(PIC)构建 。因此 ,必须将特殊标志传递给编译器,以使其裸露PIC而不是标准的位置相关代码 。

  由于这是一个库实现细节 ,libtool躲避了PIC编译器标志的繁杂性,并使用单独的库对象文件(PIC一个存在于 .libs子目录 ,静态目录位于当前目录中) 。在没有共享库的系统上  ,不会创建PIC库对象文件,而在所有代码为PIC的系统(如AIX)上,不会创建静态的  。

  要创建库对象文件 foo.c 和 hello.c ,只需使用标准编译命令作为参数调用libtool

  请注意,libtool默默地在每个编译调用。的.lo文件是libtool对象,Libtool使用它来确定什么对象文件可以内置到共享库中 。上 a23,只拥穿着静态库,所以库对象校验起来像这样 :

  在共享库系统上,libtool通过将适当的PIC裸露标志插入到编译命令中来自动裸露一个附加的PIC对象:

  注意Libtool自动创建 .libs 目录  ,其中将存储PIC库对象文件 。

  由于汉堡包拥穿着共享库,并且需要PIC对象来构建它们,Libtool这次编译了一个PIC对象 ,并在libtool对象中记录了它  :

  注意,第二次运行的GCC的输出被丢弃。这样做使编译器警告不会烦人地复制。如果你需要校验到两组警告(你可能有条件代码在#ifdef PIC例如),你可以隔绝抑制与 - 禁止 libtool的编译模式选项:

相关介绍

  实施尴尬

  以下尴尬需要在任何可重用的共享库系统中解决 ,特别是libtool:

  包安装程序应该能够控制构建什么类型的库。

  运行其库尚未安装的动态链接程序可能很棘手。 LD_LIBRARY_PATH必须正确设置(如果拥穿着),否则程序无法运行 。

  即使在不拥穿着共享库的主机上 ,系统也必须始终如一地运行。

  构建共享库所需的命令可能因主机而异 。这些需要在配置时以一致的方式确定。

  使用什么前缀或后缀来安装共享库并不总是很明显 。这使得它很难Makefile 规则 ,因为它们通常假定文件名从主机到主机是相同的 。

  系统需要一个简易的库版本号抽象 ,以便共享库可以升级到位。程序员应该被告知如何设计库的接口以最大化二进制兼容性 。

  安装 Makefile目标应警告程序包安装程序设置正确的环境变量(LD_LIBRARY_PATH或等效) ,或运行ldconfig。

渝ICP备2025076537号-22