【问题标题】:Linking dylibs installed on MacOSX for iOS app链接安装在 MacOS 上的 dylib for iOS 应用程序
【发布时间】:2015-01-06 01:19:45
【问题描述】:

我想使用具有以下依赖关系的 libcaldav。我已经构建了 libcaldav.0.dylib,而其他依赖项是通过端口或 brew 在 MAC 上安装的

otool -L  ~/lib/libcaldav.0.dylib 
~/lib/libcaldav.0.dylib:
    ~/lib/libcaldav.0.dylib (compatibility version 1.0.0, current version 1.6.0)
    /opt/local/lib/libcurl.4.dylib (compatibility version 8.0.0, current version 8.0.0)
    /opt/local/lib/libgnutls.28.dylib (compatibility version 70.0.0, current version 70.1.0)
    /opt/local/lib/libgthread-2.0.0.dylib (compatibility version 4201.0.0, current version 4201.0.0)
    /opt/local/lib/libglib-2.0.0.dylib (compatibility version 4201.0.0, current version 4201.0.0)
    /opt/local/lib/libintl.8.dylib (compatibility version 10.0.0, current version 10.2.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1)

我尝试使用

将这些文件添加到 Xcode ios 应用程序
  • 将二进制文件与库链接 -> Xcode 构建阶段
  • 其他链接器标志 -> 构建设置
  • 设置适当的搜索路径

但是,我收到以下警告和错误

ld:为 iOS 模拟器构建,但链接到为构建的 dylib 用于架构 x86_64 的 MacOSX 文件“/lib/libcaldav.0.dylib”: 错误:链接器命令失败,退出代码为 1(使用 -v 查看 调用)

环境

  • Xcode = 6.1
  • 支持的平台 = iOS
  • 有效架构 = arm64、armv7 和 armv7s

libcaldav 源码

https://github.com/fd00/yacp/tree/master/libcaldav

请帮助我,因为我一直在挣扎。请指点我需要做什么。

【问题讨论】:

  • 您将需要一个为 ARM 架构构建的库版本。您的目标是不同的平台,其中 CPU 不是 Intel 处理器而是 ARM 处理器。需要为此编译库。不要对您在 Mac 上运行 iOS 模拟器这一事实感到困惑。用ARM处理器模拟iOS设备真的很费劲。
  • 我知道这也适用于所有部门......卷曲 gnutls 以及......这真的很难
  • 请注意,libcaldav 是根据 GNU GPLv2 获得许可的,它与 iOS App Store 上的分发兼容。
  • @duskwuff 谢谢你的评论......你让我很容易决定走哪条路......喜欢这样

标签: ios objective-c c xcode ios6


【解决方案1】:

您需要为 iOS 而不是 OS X 构建这些库。具体来说,您需要使用 iOS SDK 以及 armv7 和 arm64。如果您还想在 iOS 模拟器中使用它们,则需要针对 iOS 模拟器 SDK(而不针对主机 SDK)为 i386 和 x86_64 构建它们。

请参阅我在 cross compile libgcrypt static lib for use on iOS 中的回答以获取有关如何执行此操作的一些提示。

【讨论】:

    猜你喜欢
    • 2019-10-29
    • 2018-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-10
    • 2019-12-19
    • 2021-07-14
    相关资源
    最近更新 更多