Moto Linux应用开发(-): Ubuntu上建立Moto E6交叉编译工具链

 转载时请注明出处和作者联系方式

文章出处: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 arguments
make[1]: *** [collect2.o] Error 1
make[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!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值