【问题标题】:How to check if a static library is built for 64-bit?如何检查是否为 64 位构建了静态库?
【发布时间】:2015-12-28 10:28:45
【问题描述】:

我刚刚为 iOS 构建了一个静态库,并将体系结构的构建设置设置为 $(ARCHS_STANDARD_INCLUDING_64_BIT)。

我想确保 .a 库正确包含该架构,但是当我在其上运行 lipo -info 时,我看到了:

fat文件:library.a中的架构是:armv7 armv7s (cputype (16777228) cpusubtype (0))

这是否意味着 arm64 不包括在内?如果 lipo 命令不能告诉我,还有其他方法可以告诉我吗?

我正在运行安装了最新命令行工具的 Xcode 5。

【问题讨论】:

    标签: ios objective-c static-libraries lipo


    【解决方案1】:

    是的,有一个 arm64 切片。要查看它,您需要使用来自 iOS 工具链的lipo,而不是来自主机系统(不了解 arm64):

    xcrun -sdk iphoneos lipo -info $(FILENAME)
    

    【讨论】:

    • 我很好奇 /usr/bin/lipo 和 xcrun 的 lipo 的区别。似乎它们不是一个和相同的。
    • @pshah 根据斯蒂芬的回答,/usr/bin/lipo 是 Mac 的 Lipo 版本,而 xcrun 的 lipo 是 XCode 的 lipo。所以更新到 XCode 5 意味着通过 xcrun 获得一个新的 lipo。
    • 大概是因为一个接一个出现,v10.9 附带的lipo 似乎本机识别 arm64。无需从 Xcode 调用任何东西。简单地运行 lipo -info $(FILENAME) 报告了 arm64 在测试时为我提供了一个相关库。
    • 在我的机器上,运行 macOS High Sierra,lipos 是一回事。
    • @saagarjha 是的,默认工具链lipo 现在知道所有支持的架构;当 arm64 是新的时,情况并非如此。
    【解决方案2】:

    好老的file 也可以做到这一点:

    $ file libTestFlight.a
    
    libTestFlight.a: Mach-O universal binary with 5 architectures
    libTestFlight.a (for architecture armv7):   current ar archive random library
    libTestFlight.a (for architecture armv7s):  current ar archive random library
    libTestFlight.a (for architecture i386):    current ar archive random library
    libTestFlight.a (for architecture x86_64):  current ar archive random library
    libTestFlight.a (for architecture cputype (16777228) cpusubtype (0)):   current ar archive random library
    

    苹果公司似乎还没有人愿意将 arm64 cputype 添加到 file。

    有趣的是,在 iOS 7 技术讲座视频(“架构现代应用程序,第 2 部分”,PDF 第 35 页)中,他们展示了一个工作文件工具的输出:

    【讨论】:

    • 您使用的是哪个操作系统版本?我在 10.9.1 上,“文件”只列出 cputype 而不是 arm64。
    • 我在您的示例输出中没有看到 arm64,这是我看到的问题
    • 非常酷且快速的工具来检查支持的文件架构
    【解决方案3】:

    对于.framework

    lipo -info myFramework.framework/MyFramework

    【讨论】:

    • 如何显示 lib 是静态的还是动态的?我的输出:Architectures in the fat file: MyFramework are: arm64 x86_64 两种类型。
    猜你喜欢
    • 1970-01-01
    • 2011-03-13
    • 2011-11-04
    • 2013-01-11
    • 1970-01-01
    • 1970-01-01
    • 2011-08-15
    • 1970-01-01
    • 2015-09-17
    相关资源
    最近更新 更多