3

我正在尝试将 NDK 生成的已为 ARM Android 设备编译的 .so 文件转换为 x86 设备的 .so 文件。

我可以获取 .so 文件并使用 objdump 来读取程序集,但是 objdump 并没有真正将其转换为我可以重新编译它的格式——因此将机器代码指令一对一转换似乎更容易.

有任何想法吗?我希望将 ARM 库转换为 x86,以便来自 NDK 的本机代码 ARM 应用程序在我的 x86 Android VMWare 上运行得更好。

4

2 回答 2

2

你说的是二进制翻译。您可以阅读英特尔针对其基于 x86 的移动设备的解决方案。

这不是一件容易解决的事情。您可以尝试调整QEMU的引擎,它将二进制文件转换为中间格式,然后从中生成本机代码,但如果您使用过 Android 模拟器,您就会知道该解决方案的性能可能很差。

于 2013-09-04T06:14:41.187 回答
1

可能您可以使用以下步骤重新编译,

  1. 在 Android makefile 中添加 APP_ABI := armeabi armeabi-v7a x86 并重建项目
  2. 在命令提示符下(如果没有找到 makefile)使用以下命令 ndk-build APP_ABI="armeabi armeabi-v7a x86"</li>
  3. 再次为 x86 平台打包应用程序
于 2013-10-25T11:00:59.173 回答