2012-10-04 120 views
5

運行可執行文件,我已經使用這個命令無法從亞行外殼

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

二進制被添加到Android設備成功添加tcpdump的二進制文件到我的Android設備。 但是,當我嘗試從亞行外殼程序執行tcpdump的文件,使用以下命令

./adb shell 
cd data/local 
./tcpdump 

它給了我這個錯誤

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

我也嘗試使用chmod 777 tcpdump但不成功更改權限。 我如何解決這個問題?謝謝。

+0

你如何編譯它? – Arseniy

+0

chmod給你什麼錯誤?你可以把它推到SD卡上,chmod它,然後移動它(我想)。你是根? – njzk2

+0

我使用android終端模擬器。它帶有busybox,它有tcpdump – Sharun

回答

4

你可以找到一個Android版本的tcpdump here。這個版本有些過時,只與ARM設備有關。您應該按照these instructionsofficial source構建二進制文件。

還有detailed instructions重新如何在Android上運行tcpdump。請注意,您需要一個有根的設備才能開始。

+1

此外,請檢查此鏈接。其中的部分內容解釋瞭如何使用源碼爲手臂設備構建二進制文件。很好的幫助。 http://codeseekah.com/2012/08/07/port-forwarding-an-android-local-port/ – FireAndIce

+1

tcpdump的鏈接版本是版本4.0,這是有點舊。您可以在此處下載ARM版本的4.3版本:http://omappedia.org/wiki/File:Tcpdump-4.3.0-arm.tar.gz – georgiecasey

1

編譯通過GCC二進制文件嘗試下面的命令:

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

對於Linux:

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

,並通過這個鏈接爲更好地理解:

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

+0

我使用ubuntu。我仍然嘗試這樣./adb shell/data/local/tcpdump。它給了我上面提到的同樣的錯誤。 – FireAndIce

+0

我已經發布了答案,請檢查並讓我知道...輸入您的路徑到tcpdump文件 –

0

我得到了同樣的錯誤,試圖運行另一個二進制到Android模擬器。錯誤來自編譯。

您必須爲ARM目標交叉編譯,這意味着您需要特定的工具鏈,例如arm-linux-androideabi。

要做到這一點,你需要

  • 出口CROSS_COMPILE = ARM-Linux的androideabi-(工具鏈的結束 ' - ' 沒有GCC)
  • 出口ARCH =手臂
  • 添加工具鏈到您的PATH

然後您可以運行make命令。您可能希望在構建之前向LDFLAGS添加-static。

最後使用file命令檢查你的二進制文件是否編譯得很好。您應該在打印結果中查找ARM。

在這裏的Makefile不處理CROSS_COMPILE VAR你可以嘗試讓與參數CC和AR以「$交叉編譯」 gcc和「$交叉編譯」 AR

這裏進一步的細節手動設置: http://source.android.com/source/index.html