Moto Linux應用開發(-): Ubuntu上建立Moto E6交叉編譯工具鏈

來源:互聯網
上載者:User

文章出處:http://blog.csdn.com/keensword007
作者連絡方式:琴劍 <keensword007 at sina dot com>    

最近因工作需要移植Helix player到Moto的linux手機上,拿到的開發機是Moto E6.

E6是一個2.4核心的arm體系的Linux。首先是上各大論壇惡補了一下基礎知識, E6新手快速入門教程這篇文檔總結得非常全面,推薦初次玩Moto手機的看看。 

要開發程式,首先是需要交叉編譯工具鏈。上網找了一些資料,的確有人整理了一些這樣的toolchain,非常著名的是A1200/E6之交叉編譯貼子所引用的Release_yan0.rar,可惜下載連結都已經失效了,google了一把,也沒有找到下載的地方,只能放棄。我最後選擇了ezx-crosstool-0.6(寫本文時的最新版本,可以在這裡下載),因為這個比較簡單容易理解。解壓之後運行build.sh,它會去下載所需的組件並自動編譯。編譯出來的交叉編譯工具鏈是非常老的版本,對應版本為:binutils                  2.15

gcc                        3.3.6

glibc                      2.3.2

glibc-linuxthreads  2.3.2

linux                      2.4.26

注意在運行build之前,安裝flex, bison這兩個包。

在Ubuntu下
    sudo apt-get install flex bison

就可以了。裝完之後編譯仍然出錯,這次的錯誤資訊為:

In file included from /usr/include/fcntl.h:217,                 from /home/chenzhengyong/ezx-crosstool-0.5/build/arm-linux/gcc-3.3.6-glibc-2.3.2/gcc-3.3.6/gcc/system.h:208,                 from /home/chenzhengyong/ezx-crosstool-0.5/build/arm-linux/gcc-3.3.6-glibc-2.3.2/gcc-3.3.6/gcc/collect2.c:30:In function ‘open’,    inlined from ‘collect_execute’ at /home/chenzhengyong/ezx-crosstool-0.5/build/arm-linux/gcc-3.3.6-glibc-2.3.2/gcc-3.3.6/gcc/collect2.c:1575:/usr/include/bits/fcntl2.h:51: error: call to ‘__open_missing_mode’ declared with attribute error: open with O_CREAT in second argument needs 3 argumentsmake[1]: *** [collect2.o] Error 1make[1]: Leaving directory `/home/chenzhengyong/ezx-crosstool-0.5/build/arm-linux/gcc-3.3.6-glibc-2.3.2/build-gcc-core/gcc'make: *** [all-gcc] Error 2

因為ubuntu9.10內建的是gcc-4.3.2,這個版本的編譯器對編譯問題檢查比較嚴格,所以必須安裝gcc-4.1,但是不必卸載4.3.2。方法是用新立得軟體包管理器安裝gcc-4.1,之後

sudo rm /usr/bin/gcc            (刪除GCC,它只是個到gcc-4.3.2的軟串連檔案)
sudo ln -s /usr/bin/gcc-4.1 /usr/bin/gcc        (建立GCC到gcc-4.1的軟串連)

此外如果你運行
     ls -la /bin/sh
命令,會看到/bin/sh其實是一個指向dash的軟連結,請運行以下命令,將/bin/sh連結到bash。
    sudo mv /bin/sh /bin/sh.old
    sudo ln -sf bash /bin/sh

再次運行build.sh,這時,你應該得到了一份可以用於交叉編譯的編譯環境。如果你沒有修改過build.sh裡的RESULT_TOP變數的話,它應該在ezx-crosstool-0.6/gcc-arm-iwmmxt目錄下。有了這一份交叉編譯環境,理論上來說我們就可以來編譯手機上的程式了。先做個測試吧。
寫一個經典程式test.c:
#include <stdio.h>

int main(int argc, char* argv[])
{
    printf("Hello world, MOTO E6!/n";
}

然後編譯:

首先設定路徑:

PATH=$PATH:~/mkezx/arm/gcc/gcc-3.3.6-glibc-2.3.2/arm-linux/bin

然後執行編譯命令:

arm-linux-gcc -o test test.c

然後將產生的test複製到手機上,用eKonsole執行一下./test,果然輸出了Hello world, MOTO E6!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.