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

时间:2012-09-07 09:21:07

标签: objective-c macos compilation static-libraries libtool

当谈到使用终端手动构建库时,我很遗憾没有太多经验,而且我在这里停留了一段时间。

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

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

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

所以我的问题是你需要输入哪些文件到 libtool 来将它们编译成必要的 .a 文件?你用什么命令来完成这个?

谢谢大家的时间:)

1 个答案:

答案 0 :(得分:8)

首先介绍一下静态库:

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

这就是.a扩展名代表的内容:存档。

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

ar crv libmy_library.a objectfile1.o objectfile2.o

至于你的实际问题,应该从makefile自动调用libtool,创建库,这是以.la结尾的文件。但是,这不是真正的库,真正的库位于隐藏目录中。你可以通过这样的方式找到它。

find . -name '*.a'

但就像我说的那样,makefile 应该已经处理好所有事情,包括在你做的时候在正确的位置安装正确的库。 make install

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