交叉编译详解
对于没有做过嵌入式编程的人,可能不太理解交叉编译的概念,那么什么是交叉编译?它有什么作用? 在解释什么是交叉编译之前,先要明白什么是本地编译。 本地编译 本地编译可以理解为,在当前编译平台下,编译出来的程序只能放到当前平台下运行。平时我们常见的软件开发,都是属于本地编译: 比如,我们在 x86 平台上,编写程序并编译成可执行程序。这种方式下,我们使用 x86 平台上的工具,开发针对 x86 平台本身的可执行程序,这个编译过程称为本地编译。 交叉编译 交叉编译可以理解为,在当前编译平台下,编译出来的程序能运行在体系结构不同的另一种目标平台上,但是编译平台本身却不能运行该程序: 比如,我们在 x86 平台上,编写程序并编译成能运行在 ARM 平台的程序,编译得到的程序在 x86 平台上是不能运行的,必须放到 ARM 平台上才能运行。 之所以要有交叉编译,主要原因是: 交叉编译的困难点在于两个方面: 不同的体系架构拥有不同的机器特性 交叉编译时的主机环境与目标环境不同 Configuration issues: HOSTCC vs TARGETCC: Toolchain Leaks: Libraries: Testing: 详细的对比可以参看这篇文章,已经写的很详细了,在这就不细说了: Introduction to cross-compiling for Linux