macos - 将 32 位动态库转换为 64 位的 osx
问题描述
如何将现有的动态库编译为 64 位兼容 mac 平台。我没有库的代码库,只有 xxx.dylib。
文件 xxx.dylib
xxx.dylib:具有 2 个架构的 Mach-O 通用二进制文件:[ppc:Mach-O 动态链接共享库 ppc] [i386:Mach-O 动态链接共享库 i386] xxx.dylib(用于架构 ppc):Mach-O 动态链接共享库 ppc xxx.dylib(用于架构 i386):Mach-O 动态链接共享库 i386
解决方案
你不能。没有原始源代码,无法将 dylib 重新编译为 64 位。
更糟糕的是,即使是一些疯狂的二进制后处理也不是真正可行的。
dylib 是Mach-o
最终的胖二进制可执行格式。主要挑战是:
- 切片中的 32 位 x86 英特尔操作码
i386
- 你不能毫不费力地将它们转换为x86-64
,这实际上是一个不同的二进制文件 - 最有可能
0x1000
是用于启动的虚拟内存的起源__TEXT
(通常0x1000000
在 x86-64 中),您也许可以侥幸逃脱 dylib 转而不使用ASLR / PIE ,但这仍然很可能会中断 - 遗留的
Mach-O
加载命令,最终一些可能会停止被内核支持
推荐阅读
- angular - 如何避免 NGRX 或 NGXS 中的循环
- php - 如何通过ajax jquery上传多张图片
- javascript - 我可以在 JavaScript 中使用变量作为变量名吗?
- php - Laravel 5.6 更改时间戳
- javascript - Google 应用程序脚本正则表达式匹配第 n 次出现
- android - Cordova/Ionic Android:Push 和 GoogleMaps 插件之间的 Google Play 服务版本冲突
- android - 检查firebase数据库中是否存在字符串
- c# - 如何逃离异步任务
- html - CSS - 编辑具有相同宽度的 2 个文本框的响应式表单
- kubernetes - helm cockroachdb GKE - 音量已满且不可调整大小