ARM Linux学习,从宿主机传程序到ARM——环境搭建2

时间:2021-05-04 09:59:48

上一篇文章中介绍了如何通过一根交叉网线将PC和ARM板组成局域网,网络环境搭建完成之后,本文将继续介绍如何在宿主机编译程序,然后传到ARM开发板上运行,即交叉编译。
在PC上,用gcc编译生成的程序,在ARM上运行会出错,在PC机上要使用交叉编译链arm-linux-gcc对程序进行编译。交叉编译链运行在宿主机上,这里使用的是ubuntu14.04的笔记本电脑。
在进行交叉编译之前,首先需要安装交叉工具链,使用如下步骤:、

  1. 解压工具链到某一目录下
    下载的工具链为arm-linux-gcc-4.4.3.tar.gz,将其解压到根目录下,sudo tar xvzf arm-linux-gcc-.4.4.3.tar.gz -C / ,在根目录下会生成opt文件夹。
  2. 修改/etc/profile,添加环境变量
    修改/etc/profile文件,在文件末尾加上:
    export PATH=/opt/FriendlyARM/toolschain/4.4.3/bin:$PATH
  3. 让第2步对环境变量的修改生效
    source /etc/profile
    查看:
    echo $PATH

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

工具准备好之后,开始在宿主机进行程序编译,写一个hello.c文件,用arm-linux-gcc进行编译,生成hello文件。下一步就是将该hello文件传到ARM板上运行。
开始想通过NFS(网络文件系统)在PC和ARM之间进行挂载,但是没有成功。后来使用FTP服务进行传输。传输过程如下图所示:
ARM Linux学习,从宿主机传程序到ARM——环境搭建2
ftp 192.168.0.2以ftp客户端身份登录开发板
输入用户名和密码,均为plg.
bin,设置文件传送格式
put /home/vincent/linuxstudy/armlinuxstudy/hello /linuxstudy/hello将hello文件传到ARM板的/linuxstudy目录下
by,退出ftp。
注意文件夹的权限问题,可通过chmod -R 777赋予读写权限,否则会报权限出错问题。
文件传输完成之后,通过串口超级终端查看/linuxstudy目录下会有hello文件。然后通过./hello运行该hello文件。
至此,在宿主PC机上进行交叉编译,并将可执行文件通过ftp传到ARM开发板并运行的过程已介绍完成。