当前位置: 首页 > news >正文

i686-pc linux gnu,交叉编译: --host --build --target到底什么意思?

老是在做交叉编译,其实有时候对这三个东西的理解并不是那么清楚

从交叉工具链的情况来看,可以总结如下

--build= 谁在这里编译? 意思说你目前的编译动作在哪里跑的 ? 如果是编译一个arm工具链,虽然工具链为为arm弄的,但是构建工具链的时候是在主机上进行的。所以 --build=i686-pc-linux-gnu

--host= 目前编译出来的程序在哪里跑 ? 所以工具链好了之后,给目标系统编译程序全部是设置host为arm的。

--target=为谁编译程序,这在交叉编译的时候跟host一个意思,一般是guess的,而且configure 脚本会说是 =--host.

通常我们编译复杂的情况就是交叉编译了,据说还有一种很复杂的情况,三个平台:

比较,我现在在 i686机器上,想编译一个在 ppc上运行的交叉工具链,然后这个交叉工具链为arm生产程序,这个就算比较复杂了。

应该是binutils,gcc,libc的时候这个三个--要很谨慎的设置了。

可能是--build=i686-pc-linux-gnu

--host=ppc-xxx

--target=arm-xxx

没有实验过,可以改天实验下,学习下。续:三平台交叉编译实验

对binutils源码解压,配置如下:

../binutils-2.21.1/configure

--build=i686-pc-linux-gnu --host=armv5l-jztech-linux-gnueabi

--target=mips-linux

--prefix=/home/dbh/workspace/linux-dev/nmru/prjhome/sources/bin-build/dest

然后make,发现编译的时候大部分时候调用的armv5l-xx-gcc,顺利完成,

make install,装到dest下面:

然后 ls dest

bin  lib  mips-linux  share

看来target的确是mips,然后file 下:

file bin/mips-linux-as

bin/mips-linux-as: ELF 32-bit LSB executable, ARM, version 1 (SYSV),

dynamically linked (uses shared libs), for GNU/Linux 2.6.16, not

stripped

mips-linux-as是个交叉编译器哦,在arm上跑的,不过target是mips,哈哈,看来有点感觉了。

这下可以明白,其实编译的时候编译系统根据合适的 host, build 来调用合适的gcc来做事情,可以看出来,在三个平台的时候,--build平台是跑编译脚本或者说make的,会调用 host的编译器,而且显而易见的是 host指定的一定是个交叉编译器。

相关文章:

  • android 字母好友,如何获取android手机联系人并按字母展示(二)
  • sony 播放器 android,Hi-Res Audio Player
  • adb更新android分区,Android adb升级OTA
  • android 反射执行方法,Android中怎么通过反射调用setUsbTethering()方法
  • iphone没有android安全,Android安全性与iPhone一样吗
  • android listview checkbox 选中状态,Android ListView专题之十  checkbox选中的值在翻屏时会跳来跳去...
  • 鸿蒙系统翻车了,鸿蒙系统翻车了?任正非承认忽视了关键问题,称华为犯下大错误...
  • android10侧滑返回黑屏,Android实现类似IOS右滑返回的效果(原因分析及解决办法)
  • 华为 android 安全,华为 EMUI/Magic UI 安全更新 2020-3
  • 华为mate50麒麟处理器鸿蒙系统,华为Mate50Pro概念图:有鸿蒙OS,处理器你选择麒麟还是高通?...
  • html右侧箭头是什么控件,html实现右箭头
  • html免费教程在线,免费HTML5在线教程 - 踏得网
  • android 单例设计模式,Android设计模式之单例模式
  • html5媒体查询的特点,HTML5 的媒体查询用多了好么?
  • html 数据校验,表单数据校验
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • cookie和session
  • Docker入门(二) - Dockerfile
  • es6
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • github从入门到放弃(1)
  • Java Agent 学习笔记
  • java8-模拟hadoop
  • rabbitmq延迟消息示例
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 猴子数据域名防封接口降低小说被封的风险
  • 延迟脚本的方式
  • postgresql行列转换函数
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • #{} 和 ${}区别
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • #控制台大学课堂点名问题_课堂随机点名
  • (09)Hive——CTE 公共表达式
  • (10)ATF MMU转换表
  • (2022 CVPR) Unbiased Teacher v2
  • (3)(3.5) 遥测无线电区域条例
  • (附源码)springboot教学评价 毕业设计 641310
  • (九十四)函数和二维数组
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .NET Framework 和 .NET Core 在默认情况下垃圾回收(GC)机制的不同(局部变量部分)
  • .Net 访问电子邮箱-LumiSoft.Net,好用
  • .NET/C# 使窗口永不激活(No Activate 永不获得焦点)
  • .NetCore Flurl.Http 升级到4.0后 https 无法建立SSL连接
  • .net反编译的九款神器
  • .net经典笔试题
  • .NET中使用Redis (二)
  • .sdf和.msp文件读取
  • @vue/cli 3.x+引入jQuery
  • []AT 指令 收发短信和GPRS上网 SIM508/548
  • [《百万宝贝》观后]To be or not to be?
  • [acwing周赛复盘] 第 69 场周赛20220917
  • [AIGC] Spring Interceptor 拦截器详解
  • [IDF]啥?