嵌入式系统交叉编译
来源:互联网 发布:北京mba院校排名 知乎 编辑:程序博客网 时间:2024/06/12 18:49
绝大多数的软件开发都是以native方式进行的,既本机开发、调试,本机运行的方式。这种方式不适合于嵌入式系统的软件开发,因为对于嵌入式系统的开发,没有足够的资源在本机(既开发板)上运行开发工具和调试工具。通常的嵌入式系统的软件开发采用一种交叉编译调试的方式,交叉编译调试环境建立在主机(既一台PC机)上,对应的开发板叫做目标板。
采用交叉编译的主要原因在于,多数嵌入式目标系统不能提供足够的资源供编译过程使用,因而只好将编译工程转移到高性能的主机中进行,这就需要在强大的pc机上建立一个用于目标机的交叉编译环境。这是一个由编译器、连接器和解释器组成的综合开发环境。
交叉编器通常是采用PC(x86)作为主机来搭建开发环境进行编译,但编译出的软件能够在特定CPU体系架构的目标设备(比如ARM设备)上运行的一套编译工具。
利用运行在某机器上的编译器编译某个源程序生成在另外一台机器上运行的目标代码,这种编译器既所谓的交叉编译器(Cross Compiler)。
linux下的交叉编译环境重要包括以下几个部分:
1,针对目标系统的编译器gcc;
2,针对目标系统的二进制工具binutils;
3,目标系统的标准c库glibc,有时出于减小libc库大小的考虑,你也可以用别的c库来代替glibc,例如uClibc、newlib等;
4,目标系统的linux内核头文件。
gcc、binutils、glibc以及linux内核头文件均有各自的版本号,并不是任意组合都可以编译成功并最终建立一个交叉编译环境的。一些可以直接利用的组合方式,可以通过该网址查看:http://kegel.com/crosstool/ 当我们选择了某一种组合以后,仍然需要对源代码做相应的修改,才能最终编译成功。
Crosstool是由美国人Dan Kegel(毕业于加(利福尼亚)州工学院)开发的一套可以自动编译不同匹配版本gcc和glibc,并作测试的脚本程序。
1.准备资源文件
软件包名称 下载站点
crosstool-0.43.tar.gz http://kegel.com/crosstool/crosstool-0.43.tar.gz
binutils-2.15.tar.bz2 http://ftp.gnu.org/gnu/binutils/
gcc-3.4.5.tar.bz2 http://ftp.gnu.org/gnu/gcc
glibc-2.3.6.tar.bz2 http://ftp.gnu.org/gnu/glibc
glibc-linuxthreads-2.3.6.tar.bz2 http://ftp.gnu.org/gnu/glibc
linux-2.6.28.2.tar.bz2 http://ftp.kernel.org/pub/linux/kernel/v2.6/
linux-libc-headers-2.6.12.0.tar.bz2 http://ep09.pld-linux.org/~mmazur/linux-libc-headers/
Linux环境下的GCC交叉编译器。
- 嵌入式系统交叉编译
- 嵌入式交叉编译tcpdump
- 嵌入式 netperf2交叉编译
- 嵌入式交叉编译
- 嵌入式 curl 交叉编译
- 基于openSUSE11.0交叉编译嵌入式linux系统产品
- 交叉编译VIM并移植到ARM嵌入式Linux系统
- ubuntu-16.04 64位系统搭建嵌入式交叉编译环境
- 嵌入式交叉开发系统
- 嵌入式 mitab 的交叉编译
- 嵌入式交叉编译环境搭建
- 嵌入式交叉编译环境搭建
- 搭建嵌入式交叉编译环境
- 嵌入式开发和交叉编译
- 对于嵌入式交叉编译总结
- 嵌入式socketiocpp lib交叉编译
- 嵌入式 交叉编译DirectFB以及交叉编译configure详解
- 基于FS4412嵌入式系统移植(6) glib库的交叉编译与移植
- LSHKIT的编译
- 对象的集中状态
- iPhone调用java的webService
- HQL和Criteria
- 最全的纯净系统下载地址
- 嵌入式系统交叉编译
- 暂且输出到秒
- Dubbo入门
- Oracle游标管理
- Linux下SO_REUSEADDR于TCP/IPv1中的差异
- hdu4287
- 0-1背包问题 动态规划 .
- 一对多与多对一关联关系
- Reduce Scope of Variable -- 缩小变量作用域