目录
前言:此篇搭建环境的Linux平台为ubuntu16.0.4 64位系统,SDK的目标平台为Hi3519DV300\CV500系列。
1、软件包安装
步骤 1 配置默认使用 bash
执行
#sudo dpkg-reconfigure dash
选择 no
步骤 2 安装软件包
执行:
#sudo apt-get install make libc6:i386 lib32z1 lib32stdc++6 zlib1g-dev libncurses5-dev
ncurses-term libncursesw5-dev g++ u-boot-tools:i386 texinfo texlive gawk libssl-dev openssl
bc
步骤 3 创建/etc/ld.so.preload 文件
并执行
#echo "" > /etc/ld.so.preload
以解决 64bit linuxserver 上某些第三方库编译失败的问题。
步骤 4 安装其他软件包
因为Linux交叉编译器是32位的,而ubuntu16.0.4是64位的,因此需要安装lib32ncurses5和lib32z1兼容x86的运行库及环境。
#sudo apt-get install lib32ncurses5
#sudo apt-get install lib32z1
为了解决Hi3516DV300 sdk 编译提示 cannot find uuid library required for mkfs.ubifs错误,安装u-boot-tools libuuid1:i386 gperf和zlib1g-dev liblzo2-dev uuid-dev pkg-config库。
#sudo apt-get install u-boot-tools libuuid1:i386 gperf
#sudo apt-get install zlib1g-dev liblzo2-dev uuid-dev pkg-config
2、编译arm-himix200交叉编译器
1)将toolchain\arm-himix200-linux.tgz拷贝到ubuntu16.0.4系统中
2)解压arm-himix200-linux.tgz
执行如下命令进行解压:
#tar –xzf arm-himix200-linux.tgz
3)安装arm-himix200-linux交叉编译器
运行
# chmod +x arm-himix200-linux.install
然后运行
# ./arm-himix200-linux.install
即可。
4) 执行
# source /etc/profile
安装交叉编译器的脚本配置的环境变量就可以生效了,或者请重新登陆也可。
5)修改环境变量
# sudo vim ~/.bashrc
bashrc文件末尾添加以下代码:
export PATH=/opt/hisi-linux/x86-arm/arm-himix200-linux/bin:$PATH
export LC_ALL=C
6)配置环境变量生效
# source ~/.bashrc
7)查看编译器版本
# arm-himix200-linux-gcc -v
显示编译器版本信息,则表示成功安装交叉编译器。
3、编译uboot和Kernel
1)安装SDK包
拷贝Hi3516C V500R001C02SPC011\01.software\board\Hi3516CV500_SDK_V2.0.1.1.tgz到ubuntu16.0.4系统中,运行./sdk.unpack(请用 root 或 sudo 权限执行)将会展开 SDK 包打包压缩存放的内容。
# sudo./sdk.unpack
成功执行./sdk.unpack后,会的到一个sdk包:Hi3516CV500_SDK_V2.0.1.1
如果提示source:not found,执行dpkg-reconfigure dash(执行时需要root权限)
#sudo dpkg-reconfigure dash
在出现的界面中选择no,再运行ls -l /bin/sh后显示/bin/sh/->bash
目标是编译sdk包Hi3516CV500_SDK_V2.0.1.1\osdrv根目录
2)将内核的补丁v4.9.37打到linux 的内核kernel上
从linux开源社区下载v4.9.37版本的内核:
(1) 进入网站:www.kernel.org
(2)选择HTTP协议资源的https://www.kernel.org/pub/选项,进入子页面
(3)选择linux/菜单项,进入子页面
(4)选择kernel/菜单项,进入子页面
(5)选择v4.x/菜单项,进入子页面
(6)下载linux-4.9.37.tar.gz (或者linux-4.9.37.tar.xz)到osdrv/opensource/kernel目录下
(7)在linux服务器中进入 osdrv 的根目录,执行如下命令:
# cd opensource/kernel
# tar -zxf linux-4.9.37.tar.gz
# mv linux-4.9.37 linux-4.9.y
# cd linux-4.9.y
# patch -p1 < ../linux-4.9.37.patch
# cd ../
# tar -czf linux-4.9.y.tgz linux-4.9.y
# cd ../../
完成补丁安装。
3)编译osdrv
注意:由于Makefile中文件系统编译依赖组件较多,不能保证单独编译的文件系统可用,建议采用make all编译。
进入Hi3516CV500_SDK_V2.0.1.1\osdv根目录
(1)清除整个osdrv目录的编译文件:
# make OSDRV_CROSS=arm-himix200-linux clean
(2)彻底清除整个osdrv目录的编译文件,除清除编译文件外,还删除已编译好的镜像:
# make OSDRV_CROSS=arm-himix200-linux distclean
(3)编译整个osdrv
sudo make all
提示arm-hisix200-linux-gcc: command not found的解决办法:
这是因为Linux宿主机是ubuntu 16.04 64位,而交叉编译器是针对32位的开发板制作的。所以要安装对应的32位库。
安装命令:
# sudo apt install lib32z1-dev
然后执行su root
# su root
输入root密码,进入登录root管理员权限,如下图,表示成功登录root
# vim ~/.bashrc
在环境变量末尾添加以下代码
export LC_ALL=C
export PATH="/opt/hisi-linux/x86-arm/arm-himix200-linux/bin:$PATH"
然后再执行make all编译osdrv
# make all
最后的编译提示信息如下:
编译成功可以得到:
(1)uImage
路径:Hi3516CV500_SDK_V2.0.1.1/osdrv/opensource/kernel/linux-4.9.y/arch/arm/uImage
(2)u-boot-hi3516dv300.bin
路径:Hi3516CV500_SDK_V2.0.1.1/osdrv/opensource/uboot/u-boot-2016.11/u-boot-hi3516dv300.bin
编译过程参考:
ReleaseDoc\zh\01.software\board\OSDRV\Hi3516CV500╱Hi3516DV300╱Hi3516AV300 开发环境用户指南
ReleaseDoc\zh\01.software\board\Hi3516CV500╱Hi3516DV300╱Hi3516AV300 SDK 安装及升级使用说明
ReleaseDoc\zh\01.software\board\OSDRV\Hi3516CV500╱Hi3516DV300╱Hi3516AV300 U-boot 移植应用开发指南
来源:CSDN
作者:AllenzhangV
链接:https://blog.csdn.net/Allen101zhang/article/details/103769560