Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xcode 当iOS应用程序链接到静态库时,如何获取丢弃符号列表?_Xcode_Gcc_Ios - Fatal编程技术网

Xcode 当iOS应用程序链接到静态库时,如何获取丢弃符号列表?

Xcode 当iOS应用程序链接到静态库时,如何获取丢弃符号列表?,xcode,gcc,ios,Xcode,Gcc,Ios,我正在构建一个供第三方使用的iOS静态库。它是使用几个其他的静态库构建的,包含大量的C++,从而产生了一个巨大的可交付的库。p> iOS库的API非常简单,我知道它并没有执行所有包含的代码。我想从各种库中删除不需要的模块,这样我就可以降低最终的大小 我有一个示例应用程序,它使用所有库API,当它链接时,库中的大多数符号都被丢弃。有没有办法得到这些符号的列表 这个答案似乎表明您想要在GCC 3.x和4.x中执行的操作是不可能的: 我被告知,使用动态库的限制是由代码签名过程强制执行的,因此我认为这可

我正在构建一个供第三方使用的iOS静态库。它是使用几个其他的静态库构建的,包含大量的C++,从而产生了一个巨大的可交付的库。p> iOS库的API非常简单,我知道它并没有执行所有包含的代码。我想从各种库中删除不需要的模块,这样我就可以降低最终的大小


我有一个示例应用程序,它使用所有库API,当它链接时,库中的大多数符号都被丢弃。有没有办法得到这些符号的列表

这个答案似乎表明您想要在GCC 3.x和4.x中执行的操作是不可能的:


我被告知,使用动态库的限制是由代码签名过程强制执行的,因此我认为这可能有效:

  • 将示例应用程序的可执行文件链接到静态库
  • 运行
    nm-uj
    列出可执行文件中未定义的符号。由于库已静态链接,因此唯一未定义的符号应为标准iOS库定义的符号
  • 创建静态库的动态版本
  • 将示例应用程序的可执行文件链接到动态库
  • 对此可执行文件运行
    nm-uj
    。未定义的符号是步骤2中列出的符号与可执行文件实际引用的库符号的并集
  • diff
    步骤2和步骤5中的列表。这将仅提供库中的符号列表
  • 在对象文件上运行
    nm-js\uuuuu TEXT\uuuu TEXT
    ,以获得每个对象文件导出的函数列表
  • 仅将导出步骤6中列出的函数的对象文件添加到库中
  • 这可以自动化,并且可能需要改进以考虑函数以外的符号(例如全局变量)