【问题标题】:How do you use libtool to create .a files (static libraries) on Mac OS?如何在 Mac OS 上使用 libtool 创建 .a 文件(静态库)?
【发布时间】:2012-09-01 04:03:18
【问题描述】:

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

我已经下载了一个包含 makefile 等的 Objective-c 库。

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

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

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

感谢大家的宝贵时间:)

【问题讨论】:

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


    【解决方案1】:

    首先对静态库做一点介绍:

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

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

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

    ar crv libmy_library.a objectfile1.o objectfile2.o
    

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

    find . -name '*.a'
    

    但就像我说的那样,makefile 应该已经处理了所有事情,包括在你这样做时将正确的库安装在正确的位置,例如make install.

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

    【讨论】:

    • 很酷,也感谢您提供更多信息!非常有用 :) 是的,我发现 makefile 确实构建了库,只是不在同一个文件夹中;)它们被构建到文件系统的语言环境文件夹中。谢谢你的帮助:)
    猜你喜欢
    • 2014-09-17
    • 2011-05-17
    • 2010-11-08
    • 2019-03-27
    • 1970-01-01
    • 2011-07-12
    • 2014-01-13
    • 2012-04-29
    • 1970-01-01
    相关资源
    最近更新 更多