【问题标题】:Why doesn't Libtool want to link with a static library?为什么 Libtool 不想与静态库链接?
【发布时间】:2012-06-26 10:02:03
【问题描述】:

我想使用 GNU Autotools 构建一个使用 ZipArchive 的共享库,但我遇到了这个问题:

警告:链接器路径没有库 -lziparch 的真实文件。
我有能力使该库在何时自动链接
你链接到这个库。但我只能在你有一个
库的共享版本,您似乎没有
因为我确实检查了链接器路径以查找文件开始
使用 libziparch 并且没有候选人通过文件格式测试
使用文件魔术。最后检查的文件:/usr/local/ZipArchive/ZipArchive/libziparch.a
此处已删除的库间依赖项将是
每当程序与此库链接时自动添加
or 被声明为 -dlopen。

如果我构建一个静态库或者如果我使用 ZipArchive 的共享库,它可以工作,但问题是 ZipArchive 源代码附带的 makefile 只构建一个静态库。

如何强制 Libtool 与静态库链接?

【问题讨论】:

    标签: build build-automation autotools automake libtool


    【解决方案1】:

    一般来说,静态存档是用非 pic 对象文件创建的,它们不能放入共享库中。

    该消息告诉您的是,当程序使用 Libtool 链接到您的库时,-lziparch 将被添加到链接中。所以你不需要需要改变任何东西,除非你正在为解释语言构建一个模块。在这种情况下,您必须将 ZipArchive 构建为共享库。此外,这不适用于 MS Windows 等共享库 (DLL) 必须在链接时解析其所有符号的平台。

    也就是说,如果您的 ziparch 静态库是 PIC 代码,则可以在将其链接到库时使用 -whole-archive 标志。不过,这将是最不便携的解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多