将OSX的32位动态库转换为64位

时间:2019-07-17 13:49:05

标签: macos shared-libraries 32bit-64bit dynamic-library libtool-xcode

如何将现有动态库编译为与Mac平台兼容的64位。我没有库的代码库,只有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

1 个答案:

答案 0 :(得分:0)

您不能。如果没有原始源代码,就无法将dylib重新编译为64位。

更糟糕的是,即使是疯狂的二进制后期处理也不是真正可行的。

dylib采用Mach-o最终的胖二进制可执行文件格式。主要挑战是:

  • i386中的32位x86 intel操作码-您无法毫不费力地将其转换为x86-64,这实际上是一个不同的二进制
  • 0x1000开始时最有可能的__TEXT虚拟内存起源(在x86-64中通常为0x1000000),您也许可以逃脱dylib变成未使用 ASLR / PIE,但这仍然很可能会破坏
  • 旧版Mach-O加载命令,最终某些命令可能会不再受内核支持