我有一个iOS应用程序,它使用liblzma。我目前能够成功编写跨平台编译脚本,将源代码编译成.a文件,并在项目中使用.a和header。
现在在iOS 8及更高版本中,Apple开始支持动态链接,所以我很想知道我是否能够在我的项目中使用liblzma.dylib而不是liblzma.a。但我失败了。
这就是我所做的:
修改我之前用来编译liblzma.a的编译脚本。我将--disable-shared更改为--enable-shared,然后使用lipo将每个arch的.dylib组合成一个胖.dylib。
我从项目中删除了liblzma.a,并将liblzma.dylib添加到我的项目中
建立,成功。但是当在设备上运行时,我遇到了以下错误
dyld:未加载库:/Volumes/Data/Developer/build/xz-5.2.2/build/iOS/arm64/lib/liblzma.5.dylib 参考自:/var/containers/Bundle/Application/AB7A063F-9C3F-4CEB-A757-965238947000/****.app/**** 原因:不兼容的库版本:****需要8.0.0或更高版本,但liblzma.5.dylib提供版本6.0.0 (lldb)
/Volumes/Data/Developer/build/xz-5.2.2/build/iOS/Universal/lib/liblzma.5.dylib: /Volumes/Data/Developer/build/xz-5.2.2/build/iOS/x86_64/lib/liblzma.5.dylib(兼容版本8.0.0,当前版本8.2.0) /usr/lib/libSystem.dylib(兼容性版本1.0.0,当前版本1226.10.1)
我有几个问题:
谢谢!
答案 0 :(得分:0)
解决!