Linux交叉编译

随笔1个月前发布 郭艳
30 0 0

什么是交叉编译?
为什么要有交叉编译?
交叉编译是为了解决什么样子的问题?

定义:

  在一个平台编译生成的代码在另外一个平台上面执行,这个过程称之为交叉编译。

  众所周知,CPU的架构主要分为X86架构、ARM架构、MIPS架构、RISC-V架构。假如说,在Linux X86_64平台下面编译出来的程序(可执行程序)放到ARM平台的机器上去执行,显然是行不通的。此时,就引入了交叉编译的概念。

为什么要有交叉编译,它主要解决了哪一些问题?

   经常工作中在VMWare虚拟机下面的Ubuntu里面去编译代码生成可执行程序。假如说,gcc hello.c -o  hello生成了一个名字为hello的可执行程序。使用file命令查看一下这个文件属性如下图,它是x86_64位的。

Linux交叉编译

  使用交叉编译工具链arm-buildroot-linux-xxx-gcc编译生成的可执行程序,它的架构属于ATM架构的。

Linux交叉编译

 

  为了更直观的展现出来为什么引入了交叉编译的概念,画一个图来辅助说明一下。

Linux交叉编译

  平日里的Windows电脑属于X86系统,一般开发程序都在Windows桌面的VMWare虚拟机的Ubuntu工具利用gcc工具编译代码生成可执行程序,比方说hello程序。这个hello程序通过串口线,利用mount命令通过nfs服务器讲PC电脑和开发板这2者关联起来(可以假象为一个连通器,将PC和ARM开发板串联起来,实现了资源文件共享)。

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...