1. 程式人生 > >交叉編譯arm Linux環境下的android-tools-adb

交叉編譯arm Linux環境下的android-tools-adb

前言

    專案使用Rockchip的3399挖掘機demo板,使用官方提供的Debian Linux SDK(官方github原始碼連結:https://github.com/rockchip-linux)進行開發定製。當前需要將Android上的除錯工具adb移植到arm平臺上執行,所以蒐羅了網上的一堆教程和參考,最終本地交叉編譯出了可以在RK3399(3399是armhf的)核心板上直接執行的adb工具。

    開發環境為Ubuntu1604。



一、下載桌面版Ubuntu1604的如下原始碼包:android-tools-adb,openssl,zlib。

    android-tools-adb原始碼包下載連結:https://packages.ubuntu.com/source/xenial/android-tools

    openssl-1.1.0原始碼包下載連結:https://www.openssl.org/source/

    zlib-1.2.8原始碼包下載連結:https://packages.ubuntu.com/xenial/zlib1g-dev

    注意:交叉編譯armhf平臺的adb工具,本地必須安裝openssl和zlib庫,直接用apt install是不行的,因為交叉編譯時需要連結arm版本的庫。最終交叉編譯出來的openssl和zlib庫,需要拷貝到本地/usr/arm-linux-gnueabihf/lib/目錄下。




二、下載arm-linux-gcc交叉編譯工具鏈。

    arm-none-linux-gnueabi-gcc下載地址:https://blog.csdn.net/alan00000/article/details/51724252

    arm-linux-gnueabihf-gcc下載地址:http://www.veryarm.com/arm-linux-gnueabihf-gcc

    在Ubuntu1604上安裝交叉編譯工具鏈可以參考如下連結:https://blog.csdn.net/u010957054/article/details/58056863 



三、交叉編譯openssl和zlib庫。

3)交叉編譯openssl庫。

    1. 首先在終端命令列中執行配置命令(此步驟已經做過,不需要再做,可直接從第3步做起。當然有興趣折騰的話,可以自己再配一次):./config no-asm -shared --prefix=$PWD/output/
   說明:no-asm  在交叉編譯過程中不使用匯編程式碼程式碼加速編譯過程。
               -shared  生成動態連結庫。
               --prefix  指定安裝編譯生成檔案的路徑,如不指定則預設為當前目錄。

    2. 其次修改當前目錄下的 Makefile 檔案(此步驟也已經做過,不需要再做,可直接從第3步做起。有興趣自己折騰的話,可以自行配置修改):
   將 Makefile 第74行 “CROSS_COMPILE= ” 改為 “CROSS_COMPILE= arm-linux-gnueabihf-”(前提上電腦上已經安裝了 arm 交叉編譯工具,未安裝的參考此連結:https://blog.csdn.net/u010957054/article/details/58056863
   或 https://blog.csdn.net/singleroot/article/details/54342935)。
   找到Makefile中有 “-m64” 的地方,全刪之(共2處)。

    3. 最後,在終端命令列裡面執行編譯和安裝命令:make && make install
   執行完畢後,會在當前目錄下生成一個 “output” 目錄,生成的交叉編譯庫檔案、可執行檔案和標頭檔案等均在此目錄下。

   將 “output/lib” 目錄下的 “libcrypto” 和 “libssl” 開頭的庫檔案全部複製到 “/usr/arm-linux-gnueabihf/lib/” 目錄下即可。


    參考連結:
    https://www.cnblogs.com/ynxf/p/6375091.html
    https://blog.csdn.net/zqj6893/article/details/8778237


2)交叉編譯zlib庫。

    1. 首先在終端命令列中執行命令指定編譯器:export CC=arm-linux-gnueabihf-gcc

    2. 其次執行配置命令:./configure --prefix=$PWD/output
   說明:--prefix  指定安裝編譯生成檔案的路徑,如不指定則預設為當前目錄。

    3. 最後,在終端命令列裡面執行編譯和安裝命令:make && make install
   執行完畢後,會在當前目錄下生成一個 “output” 目錄,生成的交叉編譯庫檔案、可執行檔案和標頭檔案等均在此目錄下。

   將 “output/lib” 目錄下的 “libz” 開頭的庫檔案全部複製到 “/usr/arm-linux-gnueabihf/lib/” 目錄下即可。   


    參考連結:
    https://blog.csdn.net/npy_lp/article/details/6991704



四、交叉編譯android-tools-adb工具。

    直接複製 android-tools-adb 原始碼包中 debian/makefiles 目錄下的 adb.mkcore/adb 目錄下,並改名為 Makefile 。然後在終端命令列中執行 export CC=arm-linux-gnueabihf-gcc 然後再執行 make 命令,即可編譯生成 armhf 平臺對應的 adb 可執行檔案。

    將生成的 adb 可執行程式拷貝到3399目標板 /usr/bin/ 目錄下,經驗證,可以使用完整的 adb 除錯命令。

    附上我上傳到csdn的完整資源連結,可以一次性下載 android-tools-adb, openssl 和 zlib 全部資源:https://download.csdn.net/download/u011281197/10401217