一、实验原理
- 交叉编译,就是在一个平台上生成另一个平台上的可执行代码。同一个体系结构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行。在Linux PC上,利用arm-linux-gcc编译器,可编译出针对Linux ARM平台的可执行代码。
二、实验内容与步骤
第一个实验
1、连接 arm 开发板
将 arm 开发板电源线接好,保持开发板开关处于闭合状态。再分别将串口线、
并口线和网线与 pc 机连接好。
2、建立超级终端
运行 windows XP 系统下“开始”、“所有程序”、“附件”、“通讯”、
“超级终端”。
新建一个通信终端,取名为 arm。在属性对话框中,将波特率设为 115200,
数据位设为 8,无奇偶校验,停止位为 1,无数据流控制。另存为在桌面。
3、启动实验平台
打开超级终端,打开 arm 机电源开关。等待一分钟,arm 机的信息会显示在
超级终端的窗口中。
继续等待,直至出现如图 6 所示界面。输入 ifconfig 命令,记录下 arm 机的 ip
为:192.168.0.255。
4、修改 xp 系统与 redhat 虚拟机的 ip,使得它们均与 arm 机的 ip 在同一网段。
修改完 IP,重启一下虚拟机,IP 才能启作用。重启后在命令行中使用 ifconfig 确认修改正确。
5、安装 arm 编译器。
在 pc 机中“开始”、“运行”,输入虚拟机的 ip。192.168.0.234,输入
用户名: bc ,密码: 123456 然后确定。
就可以访问虚拟机的文件了。然后把所需文件解压缩拷贝到共享文件夹 bc 中。
进入虚拟机,在命令行中输入./install.sh,安装脚本程序将会自动建立
目录,配置编译环境。操作见下面图。
6、配置环境变量
在虚拟机中使用 vi 修改/root/.bash_profile 文件中的 PATH 变量为
PATH=$PATH:$HOME/bin:/opt/host/armv4l/bin/ (因为该文件为隐藏系统文件,
所以使用 ls 命令不可见),存盘后执行: source /root/.bash_profile,则以
后 armv4l-unknown-linux-gcc 会自动搜索到,可以在终端上输入。注意空格!
- 这个实验成功的关键是要让xp,arm,red hat三个系统的ip的前三位一致,即要在同一网段内,配置完成检查一下:
7、建立 hello.c 文件并编译
在虚拟机中进入文件夹/root/bc,在此目录下编写 hello.c 文件。利用命令
armv4l-unknown-linux-gcc 对 hello.c 进行编译,生成 hello 可执行文件。
8、下载调试
在超级终端中将共享文件夹挂载好,建立开发板与虚拟机之间的通讯。输入
命令“ mount - - t nfs - - o nolock 192.168.0. 234 :/ home /bc /host” (注意bc后面要有空格!)
在超级终端中运行编译通过的 hello 可执行文件。
三、实验中遇到的问题
问题一:
在利用./install.sh命令安装arm编译器时,虽然我们已经使用了root权限登陆,然而还是遇到了权限不够的问题:
在重新设置了几次权限并重启之后依然无法安装,于是我们向娄老师求助,娄老师使用了一行代码便解决了我们的问题,令我们目瞪口呆:
回来后,我们仔细学习了这行指令的用法:
文件/目录权限设置命令:chmod
这是Linux系统管理员最常用到的命令之一,它用于改变文件或目录的访问权限。该命令有两种用法:
用包含字母和操作符表达式的文字设定法
其语法格式为:chmod [who] [opt] [mode] 文件/目录名
其中who表示对象,是以下字母中的一个或组合:
u:表示文件所有者
g:表示同组用户
o:表示其它用户
a:表示所有用户
opt则是代表操作,可以为:
+:添加某个权限
-:取消某个权限
=:赋予给定的权限,并取消原有的权限
而mode则代表权限:
r:可读
w:可写 x:可执行
问题二:
遇到的第二个问题是在超级终端编译时出现了如下问题:
经过分析之后我们认为应该是NFS设置出了问题,果然我们误删了一个文件夹,加上后便解决了这个问题。