查看: 146|回复: 0

[原创] 电鱼派试用日记5:Ubuntu下配置交叉编译器

[复制链接]

15

主题

13

好友

661

积分

举人

Rank: 4

  • TA的每日心情

    4 天前
  • 签到天数: 59 天

    [LV.5]常住居民I

    发表于 2017-1-3 21:08:09 |显示全部楼层
    本帖最后由 Adrain_shine_3005336 于 2017-3-19 23:35 编辑

         要进行基于Linux系统进行嵌入式开发,首先需要安装交叉编译器。如何在宿主机编译程序,然后传到ARM开发板上运行,即交叉编译。 在PC上,用gcc编译生成的程序,在ARM是不能运行的,因为ARM上运行的二进制机器码是基于ARM指令集的,而GCC在PC编译出来的是基于X86的指令集,自然ARM上不能运行。要使得PC上编译出的程序在ARM上可以运行,则需要在PC上安装交叉编译器。使用交叉编译链arm-Linux-gcc对程序进行编译。交叉编译链运行在宿主机上,这里使用的是ubuntu14.04的笔记本电脑。

         交叉编译之前,首先需要安装交叉工具链,电鱼派的交叉工具链可以在提供的百度云盘中获得。使用如下步骤:


    1  下载交叉工具链:arm-linux-gcc-4.6.1-dianyu.tar.gz


    jiacha.png

    2 解压工具链:目录可以任意指定但是需要在后面的环境变量中设置
    dian1.png

    dian2.png

    3 添加环境变量:在/root/.bashrc中添加工具链所在目录

    dian3.png

    将交叉编译器的bin目录加入到环境变量中,只需要将该绝对路径加入到.bashrc中最后一行:
    export PATH=$PATH:/dianyupai/arm-linux-gcc-4.6.1-dianyu/bin
    dian4.png

    在终端键入source /root/.bashrc 或者重新启动Unbuntu 使得刚才的设置的环境变量生效

    4 查看是否设置成功:终端键入 arm-none-linux-gnueabi-gcc -v
    如果出现:bash:no **********such file or  dictionary之类的话,如下图所示:



    主要是因为安装GCC4.7之前的版本的话,64位的系统一定要安装32位的库
    终端输入命令:sudo apt-get install ia32-libs
    完成之后可以查看版本:
    dian5.png

    5 测试HelloWord 查看:


    用gedit编写一个Hello.c 文件
    dian6.png


    • 编译器 : arm-none-linux-gnueabi-gcc 和gcc用法一样
      如:arm-none-linux-gnueabi-gcc hello.c -o hello
      反编译工具:arm-none-linux-gnueabi-gcc
      如:arm-none-linux-gnueabi-gcc -D -S hello
      生成汇编代码
      ELF文件查看工具:arm-linux-readelf
      如:arm-linux-readelf -a hello 全部信息 -d hello查看hello使用的动态库等。

    工具准备好之后,开始在宿主机进行程序编译,写一个hello.c文件,用arm-linux-gcc进行编译,生成hello文件。下一步就是将该hello文件传到ARM板上运行。
    dian7.png


    6 通过NFS(网络文件系统)在PC和ARM之间进行挂载PC上的共享目录为/home/tong/Work,将编译后的hello文件拷贝到共享目录,在ARM终端上使用mount命令挂载PC的共享目录到ARM开发板上的/mnt 下。过程如下图所示:

    1.PNG



    整个交叉编译环境就搭建好了,这个是编写各种电鱼派应用程序以及内核驱动程序的基础,后面就可以畅游在电鱼派的海洋啦。。。。。。。。
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    关闭

    站长推荐上一条 /1 下一条

    手机版|爱板网 |网站地图  

    GMT+8, 2017-3-23 12:30 , Processed in 0.181892 second(s), 11 queries , Memcache On.

    苏公网安备 32059002001056号

    Powered by Discuz!

    回顶部