如何在Xcode中查看静态库的内容?

zak*_*zak 5 xcode static-libraries ios

先感谢您.我有一个static library,比如说libpics.a.我想看看它的内容,例如该库的代码.我的静态库具有一个.h file与一个.a file,我可以看到的内容.h file,只有一个方法,但我不能看到的内容.a file.经过一番搜索后我才能发现,.a file包含编码部分或实现.h file's方法.我是iOS开发新手,代码在那里.a file,我想提取它,然后使用它.

我试着搜索如何打开静态库,但大部分时间我都搜索了如何创建静态库以及如何使用它等等.但我只是想打开静态库文件,只是想看看它的实现中的代码文件.

我读了一些关于nmar工具,但我不明白在哪里应用该代码.

这样的事情

nm -C libschnoeck.a | less
Run Code Online (Sandbox Code Playgroud)

要么

ar -t libsamplerate.a
Run Code Online (Sandbox Code Playgroud)

在安装命令行工具之后,我 根据ВладимирВодолазкий的建议在终端中编写了
ar -x phpFramework.a
代码.我得到了线下..

ar: phpFramework.a is a fat file (use libtool(1) or lipo(1) and ar(1) on it)
ar: phpFramework.a: Inappropriate file type or format
Run Code Online (Sandbox Code Playgroud)

Vla*_*kiy 8

您无法在静态库中看到源代码,因为那里没有源代码.IOS中的静态库就像任何其他类Unix系统一样,包含一组编译过程/函数/方法.

在普通项目构建时,只需仔细查看Xcode日志即可.您可以发现,首先,*.m文件被编译为*.o格式 - 它实际上是二进制格式(当编译源文件以在模拟器或本机设备上使用时,它是不同的).然后将这些*.o文件链接到应用程序中.(请不要责怪我这个简单的解释% - ))

实际上,静态库只是一组这样的预编译*.o文件.它由开发人员/所有者发送,以节省编译时间或/和保护源代码免于修改.因此,您只能在外部调用的帮助下使用它,这些调用记录在.h文件中,或者您可以从那里提取单独的模块( .o)并将其"手动"链接到您的应用程序中.

  • ar -t <libName> 允许列出库中的所有模块, ar -x <libName> <moduleName> 将模块提取到单独的文件 <moduleName> (2认同)