Chinaunix首页 | 论坛 | 博客
  • 博客访问: 239471
  • 博文数量: 36
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 730
  • 用 户 组: 普通用户
  • 注册时间: 2014-07-30 14:04
文章分类

全部博文(36)

文章存档

2014年(36)

我的朋友

分类: 嵌入式

2014-08-12 12:03:32

在配置完(一)里面的信息之后,你是不是有种迫不及待的心情向在windows下编写一个程序。和windows不同的是在linux中不需要专门在装一个类似VC之类的应用软件了。在系统中已经有现成的了。

一、编写helloworld应用程序

Rainysky习惯,也是为了方便,在opt建立了几个文件夹,opt/zedboard/code,并且cd /opt/zedboard/code 里面将自己的代码放到里面,方便管理。

利用vim helloworld.c 编写文件,相信大家都比较熟悉吧,里面的内容如下:

1

linux下编译.c文件时采用gcc **.c –o *** ,使用./来执行程序,为了与之后的程序相区别,生成的可执行文件为helloworld_pc,代码以及运行结果如下

2

二、交叉编译环境的建立

PC机上运行了helloworld之后,肯定想在zedboard板卡上运行程序吧,rainysky也有这样一种期待,但pc的可执行程序不能直接在arm板卡上运行,原因可以大概解释如下吧:pc机上采用的是X86体系结构,而arm采用的就是arn结构的啦,两个可以执行的二进制代码不一样,所以可执行文件不能混着用了,要是使用还是有办法的,那就是交叉编译,交叉编译的目的就是在主机上生成目标机(zedboard)能执行的文件。啰嗦了这么多,是不是觉得很烦呢,也觉得交叉编译功能很强大,不好弄。其实zedboard已经将交叉编译的文件给我们了,只需要执行几个简单的指令就可以了。

在《嵌入式系统软硬件协同设计实战指南--基于Xilinx Zynq》这本书附带的光盘里,也将交叉编译的安装文件附在里面了,在目录Chapter 9\Src\9.3 Single Board Computer中,不知道你还记得在第一篇里设置了PC机和虚拟机的共享目录,这时候就可以显示出它方便的功能了,直接复制到目录(rainysky/opt/zedboard/)下就行了,

3

 

和执行上一小节的helloworld一样,用  ./xilinx-2011.09-50-arm-xilinx-linux-gnueabi.bin 安装文件,很坑爹的出现一个错误,如下:

4

百度 google了一下,在终端里输入如下命令 dpkg-reconfigure dash,并且在弹出的对话框里选择 <>,就可以啦(原因大概是:Ubuntu shell 默认安装的是 dash,而不是 bashdash bash 更轻,更快。但 bash 却更常用。如果一些命令、脚本等总不能正常执行,有可能是 dash 的原因。比如编译 Android 源代码的时候,如果使用 dash,则有可能编译出错,或者编译的系统不能启动。<网上粘贴的>),可以安装的时候,就一路默认下去吧,不过这个时候最好注意下文件安装到哪个地方了。

这个时候你就可以找到类似于gcc一样的交叉编译工具了,

5

交叉工具是不是很多,但要是直接在终端里面输入arm-xilinx-linux-gnueabi-gcc会提示找不到。这个类似于windows,需要设置环境变量,在ubuntu中,环境变量的文件是 /etc/bash.bashrc,修改这个文件就行了(命令vim /etc/bash.bashrc),增加的内容是

export ARCH=arm

export CROSS_COMPILE=arm-xilinx-linux-gnueabi-

export PATH=/root/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/bin/:$PATH

 

6

此时保存文件,并且关闭终端,重新打开一个终端 输入arm-xilinx 按几下tab键是不是显示出来了可爱的交叉编译链。到此说明交叉编译链安装完成

7

三、交叉编译helloworld

交叉编译链安装成功了,就可以交叉编译c文件了,进入到/opt/zedboard/code/文件夹下面,使用arm-xilinx-linux-gnueabi-gcc helloworld.c -o helloworld_zed,来生成在zed板卡上能执行的文件,并用file命令验证一下

8

  如上图可以看到helloworld_zed是在arm架构中运行的程序,helloworld_pc是在X86结构下可执行的。此后在板卡上运行下就OK啦。。。。。。。。。。

阅读(2519) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~