gpt4 book ai didi

iphone - 从 iPhone 静态库中提取对象 (*.o) 文件

转载 作者:IT王子 更新时间:2023-10-29 00:13:14 25 4
gpt4 key购买 nike

我有一组 iPhone 静态库(一个 *.a 文件),我只从中调用了几个类。我过去曾使用 AR(使用 linux 库)从静态库中提取目标文件,删除不需要的目标文件并重新存档。

但是,当我尝试使用 iPhone 编译的静态库时,出现以下错误:

ar: CustomiPhoneLib.a is a fat file (use libtool(1) or lipo(1) and ar(1) on it)
ar: CustomiPhoneLib.a: Inappropriate file type or format

有谁知道如何从 iphone 编译的静态库中提取目标文件?这样做可能会减少最终文件的大小。

最佳答案

那是因为你的 CustomiPhoneLib.a 是一个胖库,即包含多个目标架构的库,即 iOS 上的 armv6 和 armv7。可以使用lipo将特定的架构提取到另一个.a文件中,使用arranlib随意操作,然后使用lipo 再次将操作过的 .a 文件重新组合成单​​个 .a fat 文件。例如,

lipo CustomiPhoneLib.a -thin armv6 -output CustomiPhoneLibarmv6.a
lipo CustomiPhoneLib.a -thin armv7 -output CustomiPhoneLibarmv7.a
### use ar and ranlib at will on both files
mv CustomiPhoneLib.a CustomiPhoneLib.a.original
lipo CustomiPhoneLibarmv6.a CustomiPhoneLibarmv7.a -create -output CustomiPhoneLib.a

但是,您不必因为您提到的原因而这样做。如果链接器需要解析某些符号引用,它只会从库 (.a) 中提取对象 (.o) 文件。因此,如果一个库包含一个目标文件,其符号在链接过程中从未被引用(即未有效使用的符号),则该目标文件将不会进入可执行文件。

关于iphone - 从 iPhone 静态库中提取对象 (*.o) 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4578771/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com