一、什么是交叉编译
简单来说,就是在一个平台上生成另一个平台的可执行代码
二、交叉编译的作用
- 若在嵌入式产品中安装一些开发工具进行产品开发的话,会造成资源的浪费
- 一般的嵌入式设备的处理速度,没有个人计算机快,所以直接在嵌入式产品中进行开发,开发速度会很慢
注意:开发时候对应平台的编译器从何来? ----> 跟对应芯片的厂商索取,芯片厂商在生产芯片的时候,会对应配套一系列开发工具
三、Linux中ARM平台的交叉编译链
以下为简要描述,详情请见:ubuntu下安装交叉编译工具链
下载地址:
arm-linux-gnueabihf-gcc是由 Linaro 公司基于GCC推出的的ARM交叉编译工具。可用于交叉编译ARM系统中所有环节的代码,包括裸机程序、u-boot、Linux kernel、filesystem和App应用程序。
arm-none-linux-gnueabi-gcc是 Codesourcery 公司(目前已经被Mentor收购)基于GCC推出的的ARM交叉编译工具。可用于交叉编译ARM系统中所有环节的代码,包括裸机程序、u-boot、Linux kernel、filesystem和App应用程序。
主要步骤:(虚拟机情况下)
- 将下载好的工具放到共享文件夹中
- 在虚拟中将工具解压
- 配制PATH环境变量---->可以直接使用工具,而不需要添加工具所在路径
四、NFS服务器的安装
nfs服务器的作用:可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,而在本地端的系统中来看,那个远程主机的目录就好像是自己的一个磁盘分区一样,在使用上相当便利;
可以将交叉编译后的可执行文件直接在另一平台调试、运行
- 安装步骤:
- 1、NFS 的下载
- sudo apt-get install nfs-kernel-server
- 2、配制NFS服务器的挂载文件
- sudo gedit /etc/exports
- 在文件末尾添加: /opt/target *(rw,sync,no_subtree_check)
- 注意需要挂载的服务器文件路径名,该路径用户必须拥有操作权限,一般为自己家目录,即/opt/target 为自己家目录
- 3、重启NFS服务器
- sudo service nfs-kernel-server restart
- 4、挂载 NFS文件
- sudo mount -o nolock 192.xxx.x.x:/home/gec /tmp //ip路径://home/用户名
- 5、卸载
- sudo umount 需要卸载的目录