无法从adb shell运行可执行文件

时间:2012-10-04 07:21:07

标签: android shell adb tcpdump

我已使用此命令将tcpdump二进制文件添加到我的Android设备

./adb push ~/tcpdump-4.2.1/tcpdump /data/local

二进制文件已成功添加到Android设备。 但是,当我尝试从adb shell执行tcpdump文件时,使用以下命令

./adb shell
cd data/local
./tcpdump

它给了我这个错误

/system/bin/sh: ./tcpdump: not executable: magic 7F45

我也尝试使用chmod 777 tcpdump更改权限,但徒劳无功。 我该如何克服这个问题?感谢。

4 个答案:

答案 0 :(得分:4)

您可以找到tcpdump here的Android版本。这种构建有点过时,仅与ARM设备相关。您应该按these instructionsofficial source构建二进制文件。

detailed instructions个在Android上运行 tcpdump 的方法。请注意,您需要一个有根设备才能开始使用。

答案 1 :(得分:1)

您应该通过Android NDK

中的GCC来编译二进制文件

答案 2 :(得分:1)

尝试以下命令:

输入此命令c:\ProgramFiles\Android\android-sdk\platform-tools\adb shell tcpdump

for linux:

   adb shell chmod 6755 /data/local/tmp/tcpdump

并通过此链接以便更好地理解:

http://www.kandroid.org/online-pdk/guide/tcpdump.html

答案 3 :(得分:0)

我在尝试将另一个二进制文件运行到android模拟器时遇到了同样的错误。错误来自编译。

您必须为ARM目标进行交叉编译,这意味着您需要一个特定的工具链,例如arm-linux-androideabi。

为此,您需要

  • 导出CROSS_COMPILE = arm-linux-androideabi-(你的工具链以' - '结尾,没有gcc)
  • export ARCH = arm
  • 将工具链添加到您的路径

然后你可以运行make命令。您可能希望在构建之前将-static添加到LDFLAGS。

最后使用file命令检查你的二进制文件是否编译得很好。您应该在打印结果中查找ARM。

如果Makefile没有处理CROSS_COMPILE var,你可以尝试用参数CC和AR手动设置“$ CROSS-COMPILE”gcc和“$ CROSS-COMPILE”ar

此处有更多详细信息:http://source.android.com/source/index.html