交叉编译cross compiling
什么是交叉编译呢,简单地说,就是在一个平台上生成另一个平台上的可执行代码。这里需要注意的是所谓
平台,实际上包含两个概念:体系结构(Architecture)、操作系统(Operating System)。同一个体系结
构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行。
嵌入式系统往往资源都是很有限的,如果其资源和我们平常用的桌面计算机(在嵌入式系统开发中我们称之为主机,host machine)一样,那我想可能就不存在交叉编译这么一说了。最为典型的是,嵌入式系统的内存往往是几兆字节,且只有FLASH而没有硬盘这种大容量存储设备。也就是说在这种资源有限的环境中,我们不可能将我们的开发工具安装在嵌入式设备中(在嵌入式系统开发中我们称之为目标机,target machine),然后象我们平时做桌面开发那样,在上面进行编码、调试最后发布软件。
现实情况是,嵌入式系统的开发是在主机上进行的,那就存在一个问题:当我们的目标机处理器与主机的处理器不同时(比如目标机是ARM处理器,而主机是x86处理器),在这种请况下,如何保证在主机上编译的程序能在目标机上运行呢?答案在于编译器上!我们说嵌入式开发用的编译器与我们平时做桌面开发的编译器是不同的,在平时,我们的编译器是运行在什么处理器上,其编译出来的可执行程序也是运行在同样的处理器上的。实际上,我们可以让一个编译器运行在x86主机上,却编译出可以在ARM上运行的可执行程序,这种编译器就是交叉编译器(cross compiler),而采用交叉编译器进行编译就是指交叉编译(cross compiling),而交叉编译器相关的环境就是指交叉编译环境(cross compiling environment)。
举一个例子,这个例子就是VxWorks(一种嵌入式实时操作系统)的Workbench(在早期版本中是Tornado协同仿真环境)。这是一个VxWorks的开发环境,其除了采用Eclipse作为IDE外,后面采用的是GNU的GCC编译器进行程序编译。有人可能要问,GCC能运行在Windows上?其实,GCC不是直接运行在Windows上的,Workbench采用Cygwin(在windows平台上运行的unix模拟环境)作为其编译器的支撑环境,也就是说GCC及其binutils是运行在Cygwin上的。采用Workbench我们可以开发几乎所有主流处理器的嵌入式产品,而所有的工作都在Windows上完成的!
至此,相信你对交叉编译、交叉编译器和交叉编译环境有了很好的了解了。
交叉编译cross compiling相关推荐
- linux dhcp 4.3编译,关于在嵌入式Linux下编译dhcp报错“cannot check for file existence when cross compiling”的初步研究...
前言.写这篇文章的由来 最近在学习韦东山嵌入式培训视频(3期项目实战之USB摄像头监控)时,在对dhcp源代码configure时,报错:cannot check for file existence ...
- 关于在嵌入式Linux下编译dhcp报错“cannot check for file existence when cross compiling”的初步研究...
前言.写这篇文章的由来 最近在学习韦东山嵌入式培训视频(3期项目实战之USB摄像头监控)时,在对dhcp源代码configure时,报错:cannot check for file existence ...
- [转] error: cannot run test program while cross compiling
在交叉编译的时候总是使用configure --host=arm-linux 嘿嘿但是在CONFIGURE中有很多的测试程序是不可以在HOST上运行的就会出现: error: cannot run t ...
- Cross compiling Windows binaries from Linux
Introduction Why? Speed Cost Containers + k8s Rejected Strategies Using x86_64-pc-windows-gnu Using ...
- checking whether we are cross compiling... configure: error: in `/tmp/pip-build-rktAki/pycrypto解决方法
前文 公司引入了阿里云centos,在新的阿里云上安装salt的时候报错如下,由于暂未升级到python3的salt,所以是直接用的pip install salt安装,结果报错,显示config ...
- arm服务器配置信息,ARM板 web服务器交叉编译及配置
httpd 一.apr 安装 1.解压 tar -xvf apr-1.7.0.tar.bz2 2.编译 ./configure CC=aarch64-linux-gnu-gcc --host=aarc ...
- mysql 客户端 交叉编译_移植mysql到嵌入式ARM平台
移植MySQL到嵌入式ARM平台 MySQL没有专门针对ARM的版本,移植到ARM没有官方文档可参考,因此,暂时参考这样一篇文档: http://blog.chinaunix.net/space.ph ...
- apache arm 交叉编译_arm apache php交叉编译
设置交叉编译路径 CC=/usr/local/arm_linux_4.3/usr/bin/arm-linux-gcc CXX=/usr/local/arm_linux_4.3/usr/bin/arm- ...
- cmake linux 交叉编译,[CMake]CMake设置arm-linux-gcc交叉编译器
标签: cmake 交叉编译器 arm-linux-gcc 分类: 开发工具/开发环境 主机:Ubuntu18.04 交叉编译器:arm-linux-gcc CMake在ubuntu系统下默认使用系统 ...
- 交叉编译ffmpeg:aac x264 x265
交叉编译AAC: 1.下载aac源码 wget -O fdk-aac.tar.gz https://github.com/mstorsjo/fdk-aac/tarball/master tar xzv ...
最新文章
- 华为鸿蒙运行视频,某游戏在华为鸿蒙运行,被识别成使用安卓模拟器
- 最基础的绑定服务步骤
- Some inputs do not have OOB scores. This probably means too few trees were used to compute any relia
- rsync 模块同步失败
- python添加库详细教程_Python 中如何自动导入缺失的库?|python基础教程|python入门|python教程...
- javax.jdo.JDODataStoreException: Required table missing : “`VERSION`“ in Catalog ““ Schema ““.
- hazelcast集群配置_使用HazelCast进行Hibernate缓存:基本配置
- bootstrap 学习网址
- [转] 一文弄懂神经网络中的反向传播法——BackPropagation
- 黄冈中学首页布局(自己做的)
- 1992-2021合集 全国大学生数学建模竞赛(历年赛题题目+定位分析)
- 苹果id无法登陆_科技来电:苹果为什么需要登录ID才能下载
- 控制系统设计专题(二)——自抗扰控制算法(上)
- Mac连接win10打印机
- 试题 基础练习 特殊回文数
- Python基础更新
- 计算机显卡故障,电脑显卡有什么故障 电脑显卡常见故障汇总
- HDU 4911 Inversion - 疯狂的癫子 解题心得
- 宽480高640证件照是几寸?我只推荐这个方法
- Python批量更改txt文本每行数据
热门文章
- FR获取当前控件位置值并转换(或赋值可参考)
- python3 open打开文件_Python3基础 file open 打开txt文件并打印出全文
- 新年2021HTML,2021年了,来一段新年快乐的挂件源码
- uefi能重置系统吗_无惧UEFI, Win10也能玩转一键自动还原
- 如何将CAD图纸在线转换成JPG图片格式
- PHP返回页面空白原因分析-Nginx+PHP
- 部分转 Java读取ini配置
- Aop RealProxy 千年遇BUG
- Handler、Message几种发送消息形式总结
- 我的Android进阶之旅------Android ListView优化详解