objective-c - 如何使用 libtool 在 Mac OS 上创建 .a 文件(静态库)?

标签 objective-c macos compilation static-libraries libtool

当谈到使用终端手动构建库时,不幸的是我没有太多经验,所以我有点卡在这里。

我已经下载了一个用于 objective-c 的库,它带有 makefile 等。

我可以看到该文件夹​​还包含一个名为“libtool”的可执行文件,我进行了一些搜索,我想这是我必须用来构建必要的 .a 文件的程序?不幸的是,我真的找不到任何似乎有效的有用文章。

库的文件夹包含一些.sh 文件、.pc 文件和一些.la 文件,但我是有点不确定我必须使用哪些作为 libtool 程序的输入以将它们编译成 .a 文件。

所以我的问题是,您必须将哪些文件输入到libtool 中才能将它们编译成必要的.a 文件?您具体使用什么命令来完成此操作?

谢谢大家的宝贵时间:)

最佳答案

首先简单介绍一下静态库:

Unix 环境(如 Mac OSX 和 Linux)中的静态库实际上只是由 ar 创建的目标文件的存档。命令行程序。

这就是 .a 扩展名的含义:存档。

要使用一些目标文件创建静态库,您可以使用如下命令:

ar crv libmy_library.a objectfile1.o objectfile2.o

至于您的实际问题,libtool 应该从 makefile 中自动调用,创建库,即以 .la 结尾的文件。然而,这不是真正的库,真正的库在一个隐藏目录中。您可以通过执行以下操作找到它

find . -name '*.a'

但正如我所说,makefile 应该 已经处理好所有事情,包括在您执行操作时将正确的库安装在正确的位置,例如安装

有关libtool 的信息,请参阅this site .

关于objective-c - 如何使用 libtool 在 Mac OS 上创建 .a 文件(静态库)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12315253/

相关文章:

ios - 系统媒体播放器进度作为 UISlider

objective-c - 如何将KVC集成到MVC中?

swift - 如何访问 NSViewController 中的复制粘贴功能

linux - #!/bin/bash --login vs #!/bin/bash

java - java是否也在用户定义的泛型类中实现类型删除?

c++ - 程序编译错误

objective-c - 使用 NSViewController 导入 Nib 文件时,文字看起来不流畅

ios - 从 viewWillLayoutSubviews 移动到 viewDidLoad 后 View 不显示

ios - 如何发布 MTAudioProcessingTap?

c - 是否可以在 Windows 机器上为 Linux 编译 CUDA C 代码?