iOS设备加载Tesseract静态库遇架构兼容错误求助
尝试用多个在线构建脚本在iOS上构建Tesseract,模拟器运行正常,但真机加载静态库时触发错误,错误信息如下:
dlopen(/var/containers/Bundle/Application/A2DE6EFD-1E15-4573-8110-E941FC1F0A83/Ocr.Demo.app/runtimes/ios-arm64/native/Ocr.xcframework/liblept-5.a, 0x0002): '/private/var/containers/Bundle/Application/A2DE6EFD-1E15-4573-8110-E941FC1F0A83/IronOcr.Demo.app/runtimes/ios-arm64/native/Ocr.xcframework/liblept-5.a' (file does not start with MH_MAGIC[_64], fat file, but missing compatible architecture (have 'arm64', need 'arm64e' or 'arm64'))
通过MAUI(C#代码库)加载该库,但问题应该和C#无关。奇怪的是,用lipo(Xcode工具链版本,含xcrun调用)生成的二进制文件始终带有0xCAFEBABE头,而非MH_MAGIC[_64]对应的0xFEEDFACF头。想知道能否强制lipo添加0xFEEDFACF头,或是它应该根据内容自动处理?
尝试过的Tesseract构建项目:
- Akylas/TesseractBuild(最近有提交,推荐优先尝试):运行脚本后所有二进制文件带0xCAFEBABE头
- hexdreamer/tesseract-build:运行脚本后所有二进制文件带0xCAFEBABE头
- tesseract-ocr/tesseract issue#4093评论方案:添加src/build目录,运行autoconfigure后执行脚本,生成的二进制文件带0xCAFEBABE头
- gali8/Tesseract-OCR-iOS:TesseractOCR/lib下所有二进制文件带0xCAFEBABE头
使用Xcode 14.3工具链构建(Xcode 15编译失败),可通过xcode-select切换不同版本的Xcode命令行工具。在Intel iMac和M2 MacBook上构建均得到相同结果。
另外,当前错误可能只是表象,存在未发现的真正导致二进制文件无法加载的问题。
内容的提问来源于stack exchange,提问作者Wolfgang Schreurs

