开源项目编译经常看到的build,host,target是什么
build 本次编译的机器,构建编译器时(构建gcc的机器)
host 本次编译产物运行的机器,构建编译器时(本次构建的gcc运行的机器)
target gcc编译的产物运行的机器,构建编译器时才有意义,本次构建的gcc编译的代码运行的机器
格式是
cpu架构-厂商-系统 如x86_64-pc-linux-gnu
或 cpu架构-系统 如x86_64-linux-gnu
build==host==target native(本地构建)
都相同 最常见 在a机器造一个编译器,在a上跑,给a机器生代码
用本地编译器,构建本地编译器
(build==host)!=target cross(交叉构建)
在a机器造一个编译器,在a上跑,给b机器生成代码
用一个本地编译器,构建一个交叉编译器
build!=host!=target canadian(加拿大构建)
都不同 在a机器造一个编译器,在b上跑,给c机器生成代码
a机器上的编译器得是个交叉编译器,才能构建出在b上跑的编译器,b上跑的编译器也是一个交叉编译器,产生的代码才能再c上跑,
用一个交叉编译器构建另一个交叉编译器
build!=(host==target) host-x-host crossed native(交叉本地) cross-built native(交叉构建的本地)
在a机器造一个编译器,在b上跑,给b机器生成代码
a机器上的编译器得是个交叉编译器,才能构建出在b上跑的编译器,b上跑的编译器实际是一个本地编译器
用一个交叉编译器构建一个本地编译器
(build==target)!=host crossback(交叉回退) 罕见
在a机器造一个编译器,在b上跑,给a机器生成代码
a机器上的编译器得是个交叉编译器,才能构建出在b上跑的编译器,b上跑的编译器也是一个交叉编译器,才能回过头产生a上跑的代码
用一个交叉编译器构建另一个交叉编译器
参考链接