搭建开发环境,首先必须具备运行软件开发相关工具的平台,我们这里使用的是云服务器。其次,需要具备对应用进行代码转换的工具,本文以Linaro交叉编译工具为例。
编译:通常指利用编译程序从源语言编写的源程序产生目标程序的过程或者动作。一般包括本地编译和交叉编译两种
为什么需要交叉编译主要从以下几个方面体现,
· Speed:目标平台的运行速度往往比主机慢得多,许多专用嵌入式硬件被设计为低成本和低功耗,没有太高的性能
· Capability:整个编译过程是非常消耗资源的,嵌入式系统往往没有足够的内存空间或磁盘空间
· Availability:即使目标平台资源很充足,可以本地编译,但是第一个在目标平台上运行的本地编译器总需要通过交叉编译获得
· Flexibility:一个完整的Linux编译环境需要很多支持包,交叉编译是我们不需要花时间将各种支持包移植到目标板上
编译环境的搭建,通常包含以下三个步骤:安装基础环境,安装配置编译器,验证交叉编译器
首先,安装标准的C开发环境
ubuntu:apt-get install build-essential centos:yum groupinstall Development Tools
在/usr/local下创建ARM-toolchain文件夹
mkdir /usr/local/ARM-toolchain
准备下载gcc
wget https://releases.linaro.org/components/toolchain/binaries/latest-5/aarch64-linux-gnu/gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu.tar.xz
解压
tar -xvf gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu.tar.xz
后配置环境变量,修改配置文件,在配置文件最后一行加入PATH配置:
ubuntu:vim /etc/bash.bashrc centos:vim /etc/profile
环境变量生效
ubuntu:source /etc/bash.bashrc centos:source /etc/profile
交叉编译器验证:
编写测试例子hello.c进行输出验证
执行 aarch64-linux-gnu-gcc -o test hello.c进行交叉编译
在x86服务器上 ./test 此时会报错 -bash:./est:cannot execute binary file
将文件拷贝到ARM服务器上,./test 可正常显示输出内容