嵌入式设备由于不具备一定的处理器能力和存储空间,程序开发一般用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) |