交叉编译是什么?

在一个CPU架构的环境下编译源代码生成可执行程序,在另一个CPU架构的环境下运行该可执行程序。前一CPU架构下无法运行该程序。

应用:嵌入式 原因:

  1. 存储空间。目标空间硬盘不够、内存不够
  2. 性能原因。目标CPU架构往往性能不强
  3. ……

buildroot是什么?

linux平台上构建嵌入式linux系统的框架。整个buildroot由Makefile和Kconfig配置文件组成。

defconfig是什么?menuconfig是什么?Kconfig是什么?

  1. XXX_deconfig文件是.config文件的模板,路径:/kernel/../arch/arm/configs/xxx_defconfig
  2. Kconfig文件,在每个源码目录下的kconfig文件组成了一个分布式的分布式的内核配置数据库。命令make menuconfig从每个kconfig中读取菜单选项,在修改菜单选项后,数据会保存到顶层目录新生成的.config文件中。
  3. 模板文件路径。例如:arch/arm/configs/s3c2410_defconfig。选择与目标CPU环境最相似的配置文件,复制到顶层目录,然后使用make menuconfig修改或者手动修改。
  4. menuconfig貌似就是makefile文件里面的一个选项。

交叉编译以后使用qemu进行模拟运行。qemu时模拟处理器的自由软件。

toolchain是什么

预处理器、编译器、汇编器、链接器、调试器的总称。 toolchain命名

  1. x86_64-linux-gnu-gcc (x86_64架构-Linux内核-GNU操作系统-gcc)
  2. aarch64-linux-android-gcc (aarch64架构-Linux内核-Android操作系统-gcc) 不同的系统,不同的架构下,的工具链可能会不一样。

交叉编译工具在哪

假设当前目录在buildroot下,交叉产生的库、工具都在./output/host/下面

参考了解: https://blog.csdn.net/u011570492/article/details/55803327