1. 程式人生 > >Android 5.0 and later only support position-independent executables

Android 5.0 and later only support position-independent executables

在參考Android利用tcpdump和wireshark抓取網路資料包使用tcpdump的時候,會提示如下資訊:

λ adb shell /data/local/tcpdump
"/data/local/tcpdump": error: Android 5.0 and later only support position-independent executables (-fPIE).

什麼是PIE:

位置獨立的可執行區域(position-independent executables)

為什麼要關閉PIE:

Android L(以上)中限制每個app只能在sd卡的特定資料夾內寫入檔案而不能讀取整個sd卡,這樣便於管理app。

解決方法

執行該native可執行檔案,輸出位置放到同目錄就好了。

λ adb shell
phone:/ #  cd data/local/
phone:/data/local # tcpdump -n -s 0 > log.txt

參考文獻

  1. Android利用tcpdump和wireshark抓取網路資料包
  2. Android L提高相容性卡刷補丁(關閉PIE)