1. 程式人生 > >編譯一個可以在Android系統上執行的可執行程式

編譯一個可以在Android系統上執行的可執行程式

開發環境

系統環境:Ubuntu14.04
 
交叉編譯器
arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
arm-none-linux-gnueabi-gcc 

 arm各個版本下載地址

 

操作流程

 
解壓 armCd  解壓目錄/bin

 

執行下面的編譯命令,這裡採用的靜態連結

~/桌面/arm-2014.05/bin$ ./arm-none-linux-gnueabi-gcc  -static /home/webrtc/桌面
/udpclient.c -o /home/webrtc/桌面/udpclient

 

在桌面生成一個可執行檔案,拷貝到root過的Android裝置上
 adb push C:\Users\pactera\Desktop\udpclient /data
 
adb shell
cd /data 進入到可執行檔案所在目錄
 
chmod 777 ./udpclient 修改許可權
 ./udpclient 192.168.1.189 9788 執行程式
 

 


沒有采用靜態連結遇到的錯誤

Android裝置上執行程式提示如下命令
/system/bin/sh: ./executer: No such file or directory

 

分析原因
進入到ubuntu系統
readelf -l udpclient 檢視可執行檔案的資訊

 

可以看到需要ld-linu.so.3動態庫檔案
 
但我們的Android系統沒有這個目錄和檔案
所以需要採用靜態連結生成可執行檔案
再檢視經=靜態連結生成的可執行檔案,發現不需要這個靜態庫了