【问题标题】:iOS:Unix:Mac extract info from a static lib regarding supported architecture(s). How?iOS:Unix:Mac 从静态库中提取有关受支持架构的信息。如何?
【发布时间】:2012-09-21 20:18:07
【问题描述】:

我的 Mac 上有一个静态库,想知道这个库是否是为 armV7s 架构构建的?是否有任何命令/工具可用于显示此库中支持的架构?

谢谢你, 卡姆兰

【问题讨论】:

    标签: ios linux macos unix static-libraries


    【解决方案1】:

    您可以使用 otool 来获取该信息。

    来自 otool 的手册页

    -L 显示目标文件使用的共享库的名称和版本号。以及共享库 ID,如果 文件是一个 共享库。

    例子

    > otool -L libRaptureXML_universal.a 
    
    Archive : libRaptureXML_universal.a (architecture armv7)
    libRaptureXML_universal.a(RXMLElement.o) (architecture armv7):
    Archive : libRaptureXML_universal.a (architecture i386)
    libRaptureXML_universal.a(RXMLElement.o) (architecture i386):
    

    【讨论】:

      【解决方案2】:
      your-mac:~ yourlogin$ file /Path/to/somebinary
      
      /Path/to/somebinary: Mach-O universal binary with 3 architectures
      /Path/to/somebinary (for architecture x86_64):    Mach-O 64-bit executable x86_64
      /Path/to/somebinary (for architecture i386):      Mach-O executable i386
      /Path/to/somebinary (for architecture ppc7400):   Mach-O executable ppc
      

      【讨论】:

      • 我从一个网站收到了 lib,并试图在我的 Xcode 中使用它,但有一些链接错误,抱怨它不包含 armV7s ...
      【解决方案3】:

      不同意其他答案,但这里还有一个选项:使用lipo 命令。

      The Apple man pages for lipo

      您可以在可执行文件或库上运行 lipo -info。一些例子:

      minime:arc username$ lipo -info libarclite_iphonesimulator.a
      input file libarclite_iphonesimulator.a is not a fat file
      Non-fat file: libarclite_iphonesimulator.a is architecture: i386
      
      minime:iPhone username$ cd HelloWorld.app/
      minime:HelloWorld.app username$ lipo -info HelloWorld
      Non-fat file: HelloWorld is architecture: armv7
      

      【讨论】:

      • 猜猜我们找到了三种非常有用的方法:D (+1)
      猜你喜欢
      • 1970-01-01
      • 2014-09-21
      • 2014-04-18
      • 2013-05-17
      • 2018-08-20
      • 1970-01-01
      • 2015-08-06
      • 1970-01-01
      • 2019-02-18
      相关资源
      最近更新 更多