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开发板串联起来,实现了资源文件共享)。

posted @   正在充电的Linux  阅读(77)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示