Linux交叉编译
- 什么是交叉编译?
- 为什么要有交叉编译?
- 交叉编译是为了解决什么样子的问题?
定义:
在一个平台编译生成的代码在另外一个平台上面执行,这个过程称之为交叉编译。
众所周知,CPU的架构主要分为X86架构、ARM架构、MIPS架构、RISC-V架构。假如说,在Linux X86_64平台下面编译出来的程序(可执行程序)放到ARM平台的机器上去执行,显然是行不通的。此时,就引入了交叉编译的概念。
为什么要有交叉编译,它主要解决了哪一些问题?
经常工作中在VMWare虚拟机下面的Ubuntu里面去编译代码生成可执行程序。假如说,gcc hello.c -o hello生成了一个名字为hello的可执行程序。使用file命令查看一下这个文件属性如下图,它是x86_64位的。
使用交叉编译工具链arm-buildroot-linux-xxx-gcc编译生成的可执行程序,它的架构属于ATM架构的。
为了更直观的展现出来为什么引入了交叉编译的概念,画一个图来辅助说明一下。
平日里的Windows电脑属于X86系统,一般开发程序都在Windows桌面的VMWare虚拟机的Ubuntu工具利用gcc工具编译代码生成可执行程序,比方说hello程序。这个hello程序通过串口线,利用mount命令通过nfs服务器讲PC电脑和开发板这2者关联起来(可以假象为一个连通器,将PC和ARM开发板串联起来,实现了资源文件共享)。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通