編譯一個可以在Android系統上執行的可執行程式
阿新 • • 發佈:2018-11-14
開發環境
系統環境:Ubuntu14.04
交叉編譯器
arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
arm-none-linux-gnueabi-gcc
操作流程
解壓 arm包
Cd 解壓目錄/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系統沒有這個目錄和檔案
所以需要採用靜態連結生成可執行檔案
再檢視經=靜態連結生成的可執行檔案,發現不需要這個靜態庫了