龙空技术网

Linux下快速建立arm嵌入式交叉编译环境

haifeng695 209

前言:

如今大家对“centos7arm交叉编译”大致比较注意,各位老铁们都想要知道一些“centos7arm交叉编译”的相关知识。那么小编也在网摘上汇集了一些有关“centos7arm交叉编译””的相关资讯,希望姐妹们能喜欢,各位老铁们一起来学习一下吧!

阅读本文的前提是认为你已经有了一套Linux的开发环境。关于如何在Windows下快速建立Linux开发环境,请参考我的上一篇文章《如何在Windows环境下快速建立Linux开发环境》,访问地址:

好了,开始正题。先从一个问题开始,我们为什么需要交叉编译环境?

提到交叉编译,就不得不从CPU的架构开始说起,我们都知道我们日常使用的大部分电脑都是基于intel的X86或这X64架构的, 而最近几年我们国家自己的龙芯CPU是基于LoognArch(MIPS64)的。不同的CPU架构对于软件的支持是不一样的。比如Windows系统就可以顺利的跑在X86/X64架构的CPU上,却不能跑在我们的龙芯上。而Linux系统因为做了不同CPU架构的适配,既可以跑在intel CPU上,也可以跑在我们的龙芯上。究其原因还是因为底层的CPU架构和指令的不同。

那么日常生活中更加厂家的各种嵌入式智能设备,例如手机,智能摄像头,MP4,工控机,还有各种各样的消费电子产品,它们大部分都是基于ARM或者单片机的,在通用PC上开发出来的程序如果按照通用PC的方式进行编译,是无法直接在这些嵌入式设备上运行的。同样一个程序,如果要在嵌入式设备上运行,必须按照嵌入式设备的CPU架构进行重新编译才行。

但是我们为了日常开发方便,通常都是在电脑上进行程序的开发,开发完成后再把程序下载到目标嵌入式设备里运行。这种在通用PC上(host)进行程序开发,然后按照目标设备(嵌入式系统)CPU架构进行编译,然后再把编译后的程序下载到嵌入式设备里进行调试、运行的开发模式就成为交叉式编译开发。

至此我们应该很清楚为什么需要交叉编译环境了。接下来我们以Ubuntu为例,介绍如何在Linux环境下快速的建立起交叉编译环境来。

第一步,安装C语言交叉编译工具“arm-linux-gnueabi-gcc”。

在Ubuntu命令提示符界面下输入命令“sudo apt-get install gcc-arm-linux-gnueabi”,即可开始自动安装arm交叉编译工具“arm-linux-gnueabi-gcc”。

如果Arm支持hard float浮点模式,还需要安装支持hf模式的编译器,同样只需要输入命令“sudo apt-get install gcc-arm-linux-gnueabihf”既可开始自动安装。

安装过程如下所示,这里我的电脑上已经安装过了,所以会提示两个编译器已经安装好。

第二步,安装C++语言交叉编译工具“arm-linux-gnueabi-g++”。

和第一步类似,在Ubuntu命令提示符界面下输入命令“sudo apt-get install g++-arm-linux-gnueabi”和“sudo apt-get install g++-arm-linux-gnueabihf”即可。如下图所示:

第三步,配置Linux的环境变量以便系统可以自动识别这两个新的编译工具。

通过Vi命令“vim /etc/profile”,打开profile环境变量文件,然后在文件的末尾增加两行,告诉Linux我们新工具的安装目录,如下所示:

修改完成后,保存退出即可。不会使用VIM进行文件编辑的同学自行搜索一下,很简单这里不再展开。

注意:

如果你是第一次修改profile文件,该文件是只读模式的,需要增加修改权限。切换到/etc目录下,用ls -l profile命令查看profile的权限,如下:

可见默认只有读权限,需要增加写权限,执行命令“sudo chmod +666 profile”,结果如下:

可见,这个时候文件已经具备写(修改)的权限了。再次执行vim命令,增加交叉编译工具目录到profile里并保存。

第四步,让新增加的工具命令在系统里生效。

执行命令“source /etc/profile”

第五步,检查交叉编译工具确实已经生效。

执行检查工具版本号的命令“arm-linux-gnueabi-gcc -v”,如下:

可以看到可以查到版本号,交叉编译工具已经正确安装,正确配置。

同样的方法可以验证下C++交叉编译工具。

第六步,进行交叉编译。

这里以一个非常简单的例子演示下,我的C源文件放在“/home/kevin”下。

Cd到kevin目录,执行交叉编译命令“arm-linux-gnueabi-gcc kevin_vim_test.c -o test-arm”,生成arm上可以运行的程序test-arm。结果如下:

第七步,验证程序。

这里test-x64是我用gcc直接编译的,所以可以在电脑上跑。而test-arm是刚才交叉编译出来的,可以在arm上运行,但不能在PC上运行。我们测试一下,结果如下:

可见,针对arm编出的程序,因为执行格式不对无法运行,而根据X64架构编译的程序则可以正常运行。

到这里,大家应该对如何建议交叉编译环境有了一个充分的认识了吧。

标签: #centos7arm交叉编译