Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1207702
  • 博文数量: 322
  • 博客积分: 10010
  • 博客等级: 上将
  • 技术积分: 3276
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-17 09:21
文章分类

全部博文(322)

文章存档

2010年(155)

2009年(167)

我的朋友

分类: 嵌入式

2009-12-19 11:09:02

嵌入式设备由于不具备一定的处理器能力和存储空间,程序开发一般用PC来完成,然后将可执行文件下载到嵌入式系统中运行。这是目前嵌入式程序开发的不二选择——Host/target模式。但这引发了一个问题:由于Host和Target的处理器体系结构不同,我们不能直接用PC上既有的程序开发工具,必须使用跨平台开发工具,即在Host上生成能在Target上运行格式的目标文件。

自己建立交叉编译环境是一件很头疼的事(处理版本的依赖性, 漫长的编译过程...),如果你不想经历这样的痛苦,可以选择网上编译好了的工具链进行安装.如果你用的是Debian/Ubuntu的发行版, 可以使用
. 如果使用uClinux, 也可安装. 另外, 有一个比较新的项目: , 它提供了针对linux, cygwin, MacOS平台的交叉编译工具, 有源代码形式的, 也有二进制形式的.

本blog有篇自己从源代码构建交叉编译工具的文章,  看
这里!


Emdebian


Emdebian提供了binutils 2.15, gcc3.3.5 / gcc3.4.3的稳定已编译版本.

安装方法:
(1)在/etc/apt/sources.list文件中添加下列内容:
deb ./

(2)运行 $ apt-get update

(3) $ apt-get install gcc-3.3-arm-linux libc6-dev-arm-cross
或  $ apt-get install gcc-3.4-arm-linux libc6-dev-arm-cross
前者安装3.3版,后者安装3.4版.我在Ubuntu上安装3.3的依赖性有问题,安装3.4的成功。

Warning
The emdebian cross development environment will install files in /usr/bin so you will have to make sure that you do not overwrite any development tools which you may already have on your system.

Embedian将开发环境所用的软件放在/usr/bin目录中:
$ ls /usr/bin/arm*
arm-linux-addr2line  arm-linux-c++filt  arm-linux-gcc      arm-linux-nm       arm-linux-ranlib   arm-linux-strings
arm-linux-ar         arm-linux-cpp      arm-linux-gcc-3.4  arm-linux-objcopy  arm-linux-readelf  arm-linux-strip
arm-linux-as         arm-linux-cpp-3.4  arm-linux-ld       arm-linux-objdump  arm-linux-size

但我最近运行 $ sudo apt-get update 时发现:
deb ./
这个源有问题了, 装不了


ARM-ELF-TOOLS


到下载arm-elf-tools交叉编译工具安装程序。

下载之后的文件名为arm-elf-tools-20030314.sh(日期可能不同)是脚本文件,安装方法:
    (1)首先看其权限,如果没有执行权限,先给它加上相应的执行权限。
    (2)应该将它拷贝到根目录下,运行$ sudo sh ./arm-elf-tools-20030314.sh。默认的安装路径在usr/local目录。
   
到/usr/local/bin,查看目录中是否存在以arm-elf开头的文件,如果有,则说明安装成功。
   
注意Emdebian的arm-linux工具和uClinux的arm-elf工具区别:
1, arm-linux可视为标准工具链, arm-elf相当于针对运行uClinux的目标环境做了一些补丁.
2, arm-linux默认安装路径在/usr/bin, arm-elf默认安装路径在usr/local/bin.
3, arm-linux使用glibc库,而arm-elf使用uClibc.
一般来说,如果你用uClinux开发,则使用arm-elf工具,否则使用arm-linux工具.



GNU ARM

GNU ARM 针对cygwin, GNU/Linux(x86), GNU/Linux(x86_64), MacOS提供了source, binary形式的交叉编译工具.
目前针对x86 GNU/Linux 的binary工具是:
使用它很简单, 将包放在一个合适的目录, 解压, 将bin目录添加到PATH变量, 你就可以调用了.

注意它使用的newlib, 而且带上了insight调试工具(后端是gdb).
阅读(949) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~