什么是交叉编译?
为什么要有交叉编译?
交叉编译是为了解决什么样子的问题?
定义:
在一个平台编译生成的代码在另外一个平台上面执行,这个过程称之为交叉编译。
众所周知,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开发板串联起来,实现了资源文件共享)。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...