交叉编译中--host --target --build
时间: 2023-09-30 21:12:48 浏览: 70
在交叉编译中,`--host`、`--target` 和 `--build` 是三个重要的配置参数。它们的含义如下:
- `--host`:指定编译生成的可执行文件运行的目标系统平台,也就是编译后的程序所要运行的目标平台环境。例如,在 Linux 上编译 Windows 程序时,`--host` 应该设置为 Windows 平台的目标架构和操作系统。
- `--target`:指定编译器要生成的目标系统平台,也就是编译器生成的代码将要运行的目标平台环境。例如,在 Linux 上编译 ARM 架构的程序时,`--target` 应该设置为 ARM 目标平台的架构和操作系统。
- `--build`:指定用来构建编译工具链的计算机系统的类型。这个参数一般由编译器自己检测并设置,不需要手动指定,除非你有特殊的需求。
举个例子,如果我们在 Ubuntu Linux 上使用交叉编译器编译一个运行在 ARM 架构的嵌入式设备上的应用程序,那么:
- `--host`:应设置为 ARM 架构和操作系统,例如`--host=arm-linux-gnueabihf`。
- `--target`:应设置为嵌入式设备的 ARM 架构和操作系统,例如`--target=arm-linux-gnueabihf`。
- `--build`:通常由编译器自动检测并设置,不需要手动指定。
需要注意的是,不同的编译器和交叉编译工具链,对于这些参数的具体使用方式和设定值可能会有所不同,需要根据具体情况进行设置。
相关问题
交叉编译中--host --target --build和host target build的区别
在交叉编译中,"--host"、"--target"和"--build"是用来指定不同系统的参数。而"host"、"target"和"build"则是在一般编译中使用的参数。
具体区别如下:
1. "--host":指定编译后的程序将要运行的系统的参数。比如编译 ARM 架构下的程序,"--host"参数应该指定为 ARM,编译完成后的程序将在 ARM 系统上运行。
2. "--target":指定编译器生成的目标代码所针对的系统的参数。比如编译 ARM 架构下的程序,"--target"参数应该指定为 ARM,编译器将会生成针对 ARM 系统的目标代码。
3. "--build":指定编译器本身运行的系统的参数。比如在 Windows 系统上编译针对 ARM 架构的程序,"--build"参数应该指定为 Windows,编译器将会在 Windows 系统上运行。
4. "host":指定编译器运行的系统的参数。比如在 Linux 系统上编译程序,"host"参数应该指定为 Linux,编译器将会在 Linux 系统上运行。
5. "target":指定编译器生成的目标代码所针对的系统的参数。比如编译 ARM 架构下的程序,"target"参数应该指定为 ARM,编译器将会生成针对 ARM 系统的目标代码。
6. "build":与"--build"参数的作用相同,指定编译器本身运行的系统的参数。
总体来说,"--host"、"--target"和"--build"是用来指定交叉编译中不同系统的参数,而"host"、"target"和"build"则是在一般编译中使用的参数。
Configure --build --target --host
Configure是一个用于自动化软件编译过程的工具,它可以根据不同的平台和需求生成Makefile文件。--build、--target和--host是Configure中的三个选项,它们的含义如下:
--build:指定用于构建软件的系统类型,即编译器和工具链所在的系统类型。
--target:指定生成的可执行文件或库文件的目标系统类型,即编译后的程序将在哪种系统上运行。
--host:指定用于运行生成的可执行文件或库文件的系统类型,即编译后的程序将在哪种系统上被运行。
在不涉及交叉编译的情况下,这三个选项的值是相同的,因为编译、目标和运行的系统都是同一个。但是在交叉编译的情况下,这三个选项的值就需要根据实际情况进行设置。
例如,如果需要在x86平台上编译ARM程序,则需要设置--build为x86平台,--target为ARM平台,--host为ARM平台。这样生成的可执行文件或库文件就可以在ARM平台上运行了。
下面是一个示例:
```shell
./configure --build=x86 --target=arm --host=arm
```