使用高级语言编写的代码都需要通过编译的方式转换成计算机可以识别和执行的二进制代码,宿主机开发时使用宿主机上的交叉编译、汇编以及链接工具形成可执行的二进制代码,这种可执行代码并不能在宿主机上运行,只能下载到目标班上运行。
实验内容:
1.安装交叉编译环境
2.安装minicom,tftp,nfs,partitionmanager
实验步骤:
1.使用高级语言编写的代码都需要通过编译的方式转换成计算机可以识别和执行的二进制代码,宿主机开发时使用宿主机上的交叉编译、汇编以及链接工具形成可执行的二进制代码,这种可执行代码并不能在宿主机上运行,只能下载到目标班上运行。
交叉编译工具的准备可以有两种途径:(1)从有关网站下载通用的软件包,然后经过一系列的编译过程产生所需的交叉编译工具;(2)直接从官网上下载已经移植好的交叉编译工具和libc库
方法一太过复杂,这是方法二的处理:
安装交叉编译工具链
#sudo su
#cd /home/liudan/beaglebonedemo/Toolchain
#cp linux-devikit.tar.bz2 /opt/Tools
#cd /opt/Tools/ //进入到Tools目录下
#ls
#tar jxvf linux-devikit.tar.bz2 //解压缩软件包
#cd
#gedit ./bashrc
添加: CORSS_COMPLIE=arm-arago-linux-gnueabi- //解释(1)
PATH=“/opt/Tools/linux-devkit/bin:${PATH}” //解释(2)
export PATH CROSS_COMPILE //显示环境变量
(1)CORSS_COMPLIE:交叉编译
arm:CPUArchitecture
arago:HardwarePlatform or Vendor,表示的供应商,对于arm这里可以是hardfloat或是softfloat,也就是使用的是硬浮点还
是软浮点。其实这个东西是在编译gcc时候,通过-with-float=指定而不是通过这里进行识别。但有的时候,一些编译
脚本会识别到这里来确定浮点运算器是软还是硬
Linux:Operation system
Gnueabi:C library ,是C的函数库的使用,比如gnu是GNU CLibrary,也就是glibc,对应好还有uclib。附加的eabi其实是说,使用的是新的EABI二进制接口Embedded application binary interface.这个嵌入式专用接口比老的更好用,效率更高而且支持新的一些硬件功能。
这一大堆联合起来,只是为了直观的表现并且区别使用用途和功能定义。
(2)一般来说,配置交叉编译工具链的时候需要制定编译工具的路径,此时就需要设置环境变量。
例如我的mips-linux-gcc编译器在“/opt/au1200_rm/build_tools/bin”目录下,build_tools就是我的编译工具,则有如下三种方法来设置环境变量:
1.直接用export命令:
#export PATH=$PATH:/opt/au1200_rm/build_tools/bin
2.修改profile文件:
#vi /etc/profile
在里面加入:
export PATH=$PATH:/opt/au1200_rm/build_tools/bin
3.修改.bashrc文件:
# vi /root/.bashrc
在里面加入:
export PATH=$PATH:/opt/au1200_rm/build_tools/bin
后两种方法一般需要重新注销系统才能生效,最后可以通过echo命令测试一下:
# echo $PATH
看看输出里面是不是已经有了/my_new_path这个路径了。
#source /root/.bashrc //使修改的东西生效
source命令的用法:
source FileName
作用:在当前bash环境下读取并执行Filename中的命令。
注:该命令通常用命令”.”来代替
如:source /etc/profile与./etc/profile是等效的
注意:source和shell script的区别是
Source在当前bash环境下执行命令,而scripts是启动一个子shell来执行命令。这样如果把设置环境变量的命令写进
scripts中,就只会影响子shell无法改变当前的bash,所以通过文件(命令列)设置环境变量时,要用source命令。
#arm-garao-linux-gnueabi-gcc //验证安装是否成功
#apt-get install minicom tftp-hpa nfs-kennel-server partition manager
//安装minicom,tftp,nfs,partitionmanager
#gedit /etc/default/tftpd-hpa //安装配置tftp-hpa
添加:
Defaults for tftpd-hpa
RUN_DAEMON=”yes” //此处将”no”改成yes,以启动tftp服务
OPTION=”-l–s/tftpboot” //此处设置服务器目录,共享文件
#gedit /etc/export //安装配置 nfs
添加:
/share*(rw,sync,no_root_squash)
共享etc/export目录下的内容,并且让该用户进入etc/export目录后的身份为root,且有读,写的权限,加上sync,sync是NFS的
默认选项。
sync也是一个linux同步命令,含义为迫使缓冲块数据立即写盘并更新超级块。在linux系统中,为了加快数据的读取速度,默认情况下,某些数据将不会直接写入硬盘,而是先暂存内存中,如果一个数据被重复写,这样速度一定快,但存在一个问题,万一重新启动,或者是关机,或者是不正常断电的情况下,由于数据还没来得及存入硬盘,会造成数据更新不正常,这时需要命令sync进行数据的写入,即#sync,在内存中尚未更新的的数据会写入硬盘中。所以在关机或者开机之前最好多执行这个几次,以确保数据写入硬盘。
#/etc/init.d/nfs-kenel-server restart //重启nfs-server