将 32 位动态库转换为 64 位 osx
Convert 32 bit dynamic library to 64 bit for osx
如何将现有动态库编译为与 mac 平台兼容的 64 位。我没有库的代码库,只有 xxx.dylib.
文件xxx.dylib
xxx.dylib:具有 2 种架构的 Mach-O 通用二进制文件:[ppc:Mach-O 动态链接共享库 ppc] [i386:Mach-O 动态链接共享库 i386]
xxx.dylib (for architecture ppc): Mach-O 动态链接共享库 ppc
xxx.dylib(对于架构 i386):Mach-O 动态链接共享库 i386
你不能。没有原始源代码就无法将 dylib 重新编译为 64 位。
更糟糕的是,即使是一些疯狂的二进制 post 处理也不是真正可行的。
dylib 是 Mach-o
final fat 二进制可执行格式。主要挑战是:
i386
切片中的 - 32 位 x86 英特尔操作码 - 你不能毫不费力地将它们转换为
x86-64
,这实际上是一个不同的二进制文件
- 最有可能
0x1000
__TEXT
启动的虚拟内存来源(在 x86-64 中通常是 0x1000000
),您 可能 摆脱它 dylib 变成 not using ASLR / PIE ,但仍然很可能会崩溃
- 遗留
Mach-O
加载命令,内核最终可能会停止支持某些命令
如何将现有动态库编译为与 mac 平台兼容的 64 位。我没有库的代码库,只有 xxx.dylib.
文件xxx.dylib
xxx.dylib:具有 2 种架构的 Mach-O 通用二进制文件:[ppc:Mach-O 动态链接共享库 ppc] [i386:Mach-O 动态链接共享库 i386] xxx.dylib (for architecture ppc): Mach-O 动态链接共享库 ppc xxx.dylib(对于架构 i386):Mach-O 动态链接共享库 i386
你不能。没有原始源代码就无法将 dylib 重新编译为 64 位。
更糟糕的是,即使是一些疯狂的二进制 post 处理也不是真正可行的。
dylib 是 Mach-o
final fat 二进制可执行格式。主要挑战是:
i386
切片中的- 32 位 x86 英特尔操作码 - 你不能毫不费力地将它们转换为
x86-64
,这实际上是一个不同的二进制文件 - 最有可能
0x1000
__TEXT
启动的虚拟内存来源(在 x86-64 中通常是0x1000000
),您 可能 摆脱它 dylib 变成 not using ASLR / PIE ,但仍然很可能会崩溃 - 遗留
Mach-O
加载命令,内核最终可能会停止支持某些命令