Android设备上使用objdump出现64-Bit ELF错误的解决方法

13次阅读
没有评论

问题描述

在尝试将计算机上的objdump二进制文件通过adb传输至其安卓手机时遇到错误:sh: /system/bin/objdump: not executable: 64-bit ELF file。尽管尝试使用chmod 755 /system/bin/objdump更改权限,仍然没有解决问题。

解决方案

方案1

注意:此操作不会针对特定手机型号或硬件架构进行深入调整,请确保你的设备支持所需的软件。

理由说明:

由于计算机和移动设备的处理器存在差异,无法直接使用在一台设备上编译的二进制文件在另一台不同的设备上运行。objdump是从一个64位处理器环境编译出来的,在大多数安卓设备上可能采用的是ARM架构,这种架构的处理器与之不兼容。

实施步骤:

  1. 获取源代码:首先访问objdump的源代码仓库(如GNU Binutils),下载并解压相关部分。
  2. 了解设备架构:确定你的Android设备使用了哪种类型的处理器。可以通过adb命令行在设备上执行以下命令查看arch
    sh
    adb shell cat /proc/cpuinfo | grep "CPU architecture"
  3. 构建适合的版本:在获取到正确架构的源代码后,配置环境并进行编译,例如使用如下命令:
    sh
    ./configure --host=arm-linux-gnueabi && make
  4. 将生成的可执行文件通过adb传输至设备中,并替换现有的/system/bin/objdump。当然,这个过程需要root权限。

方案2(推荐)

使用Termux安装适合的工具:
1. 安装Termux:由于编译软件和开发相关的问题超出了问题范围,建议直接在手机上安装Termux和其他所需工具。
sh
pkg install g++ && gcc -dumpversion

2. 使用g++或其他可用的工具执行对应的二进制操作。

操作步骤:

  • 打开Termux应用,在其中即可直接使用如gcc, objdump等构建或调试相关命令,无需额外的权限和安装。

这个方法不仅简化了工作流程,还避免了复杂的移植编译过程。同时确保操作与设备适配性更高。

通过这两种方案中的一种解决当前的问题可以使得用户能够继续进行所需的开发/调试操作而不会遇到类似的问题。推荐使用Termux方式执行任务。

正文完