交叉编译等等相关

Posted by API Caller on February 19, 2020

交叉编译是个躲不开的东西, 继续挖坑记录一下各种交叉编译相关甚至各种跨平台相关的东西(牵强), 等东西多了再拆分.

Summary

target triplet

target triplet1 2 3 用来描述目标平台, 格式为 cpu-vendor-os

  • gcc -dumpmachine 可以看到 the compiler's target processor 例如 x86_64-linux-gnu

  • vendor 有时候为 none 例如 arm-none-eabi

  • arm-none-linux-gnueabiarm-none-linux-gnu-eabi 的缩写, 因为一些工具要求最多有三个连字符, 所以合写在一起4.

build host target

host: 编译出来的程序会运行的系统 build: 用来编译程序的系统 target: 只有交叉编译才会用到, 也就是 hostbuild 不相同的时候, 它表明了将来用它生成的程序会运行的系统.

例如编译 gcc: ./configure --target=i686-pc-linux-gnu --host=arm-linux --build=i686-pc-linux-gnu, 这个意思就是在 i686-pc-linux-gnu 的机器上编译一个能跑在 arm-linux 上的 gcc, 这个 gcc 可以编译出能跑在 i686-pc-linux-gnu 上的程序5.

Ref