主机平台:ubuntu14.04.5
目标平台:SAIL-IMX7D核心板
虚拟机:VMware-workstantion-full-12.5.5
编译工具链:gcc-linaro-arm-linux-gnueabihf-
1 Linux开发环境搭建
1.1 安装编译器
IMX7D Linux系统常用编译器的版本是gcc-linaro-arm-linux-gnueabihf-4.9。
编译器的安装包在/光盘/linux/交叉编译器/中,
gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux.tar.xz压缩包是交叉编译器安装包。将安装包拷贝到Ubuntu的 /dianyu 目录下。
如果Ubuntu没有/dianyu目录,可以使用 #mkdir /dianyu 创建一个新目录。修改 /dianyu 权限,命令: #chmod 777 /dianyu
在Ubuntu中新建目录 /usr/local/arm,命令 #mkdir -p /usr/local/arm。
将gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux.tar.xz解压缩到/usr/local/arm,命令
#tar xvf /dianyu/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux.tar.xz -C /usr/local/arm
如图所示:
上述命令执行完成后,即可完成编译器安装。同时设置一下环境变量,执行命令:
#export PATH=/usr/local/arm/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin/:$PATH
1.2 设置、升级开发环境依赖库
将 /光盘/通用工具/工具脚本 中setup-package-install.sh文件拷贝到Ubuntu中的 /dianyu 目录下,如图所示:
修改/setup-package-install.sh权限,命令#chmod 777 setup-package-install.sh
命令: #./setup-package-install.sh ,如图所示:
报错,bash: ./setup-package-install.sh: /bin/sh^M: bad interpreter: No such file or directory执行vi setup-package-install.sh,回车
将每行后面的^M删掉(若不报错可直接进行下一步)。删完后保存退出。
重新执行./setup-package-install.sh 选择Y,回车,如图所示:
这里直接回车,默认是Yes。如图所示:
正在从源服务器下载配置环境的安装包。如图所示:
安装完成后,如图所示:
若安装失败,则输入命令:# apt-get update
然后再重新输入命令:#./setup-package-install.sh 进行安装。
2 SAIL-IMX7D内核编译
将/光盘/linux/源代码/sail-imx7d-linux-4.1.15.tar.gz 拷贝到Ubuntu系统中的/dianyu 目录中。
在终端中执行命令:#cd /dianyu
然后执行解压缩命令:#tar zxvf sail-imx7d-linux-4.1.15.tar.gz,将sail-imx7d-linux-4.1.15.tar.gz解压缩到 /dianyu 目录下。解压工作完成后,在 /dianyu目录下自动生成 sail-imx7d-linux-4.1.15 目录。sail-imx7d-linux-4.1.15 目录就是linux内核源码了。
使用命令 #cd sail-imx7d-linux-4.1.15
进入sail-imx7d-linux-4.1.15目录
执行清理编译产生的中间文件。命令: #make clean
编译内核。命令:#make zImage ZIMAGE_LOADADDR=0x10008000
如图所示:
正在编译,如下图所示:
编译报错(如果不报错,可跳过此步,若出现其他错误,请自行百度),如下图所示:
报错提示为缺少lzop,命令apt-get install lzop,安装lzop,如下图所示:
安装完成后,重新编译内核,成功,如下图所示:
编译dts。命令:#make sail-imx7d.dtb,如下图所示:
编译成功如图所示:
其中zImage、sail-imx7d.dtb即为linux系统下的内核源码。
3 说明
搭建linux开发环境时主要的问题是/setup-package-install.sh文件,首先是权限问题,更改其权限为777,其次是在拷贝到虚拟机里时会在每一行后面多出^M,只有使用vi打开才能看到。配置好环境变量后,编译内核源码一般不会出现问题,若出现问题则根据实际情况寻找解决办法。