步骤 1 配置默认使用 bash
#sudo dpkg-reconfigure dash
选择 no
步骤 2 安装软件包
执行:
#sudo apt-get install make libc6:i386 lib32z1 lib32stdc++6 zlib1g-dev libncurses5-dev
sudo apt install lib32z1-dev
#sudo apt-get install ncurses-term libncursesw5-dev g++ u-boot-tools:i386 texinfo texlive gawk libssl-dev openssl
步骤 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
步骤 5 编译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
执行
#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
image.gif
7)查看编译器版本
#arm-himix200-linux-gcc -v
虽然目录下有详细解说文档,但是建议分开编译uboot和kernel,建议使用root用户进行编译等操作,sudo可能会掉权
首先,输入
su root ,环境也要改变
#vim ~/.bashrc
在环境变量末尾添加以下代码
export LC_ALL=C
export PATH=/opt/hisi-linux/x86-arm/arm-himix200-linux/bin:$PATH
然后source一下使文件生效即可
解压下载下来的海思SDK包,然后运行
./sdk.unpack
将下载的 linux-4.9.37.tar.gz 存放到 osdrv/opensource/kernel 目录中
进入 osdrv 的根目录,执行如下命令:
cd opensource/kernel
tar -zxf linux-4.9.37.tar.gz
此时解压出来的osdrv文件夹处有read me,按照提示下载压缩包下来放到各自所处的位置。
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 …/…/**
进入 osdrv/opensource/kernel/linux-4.9.y 目录
执行如下命令:
cp arch/arm/configs/hi3516dv300_smp_defong .config
source /etc/profile
export LC_ALL=C
sudo apt-get install u-boot-tools
make ARCH=arm CROSS_COMPILE=arm-himix200-linux- menuconfig
make ARCH=arm CROSS_COMPILE=arm-himix200-linux- uImage
make ARCH=arm CROSS_COMPILE=arm-himix200-linux- modules //编译模块
生成的 uImage 在 linux-4.9.y/arch/arm/boot 目录下
进入目录osdrv/opensource/uboot
解压文件
tar -xzf u-boot-2016.11.tgz
cd u-boot-2016.11
编译uboot
先制作reg.bin文件
uboot_tools目录下制作reg.bin,参考readme
得出一个reg_info.bin文件,
tar -xzf hiregbin-v5.0.1.tgz
cd Hi3516CV500_SDK_V2.0.1.0/osdrv/tools/pc/uboot_tools/hiregbin-v5.0.1
之后复制bin文件到hiregbin-v5.0.1,dv500的xlsm文件也复制到该目录,并且改名为Hi3516dv300
然后
chmod 777 hiregbin
./hiregbin ./Hi3516dv300.xlsm ./reg.bin
再回到 u-boot-2016.11执行
cp …/…/…/tools/pc/uboot_tools/reg.bin .reg
make ARCH=arm CROSS_COMPILE=arm-himix200-linux- u-boot-z.bin
可以看到dv300的bin文件已经成功生成
一般解压运行那个
./sdk.unpack里面的smp_image_glibc文件夹就有所有镜像以及Bin文件了,不需要自己手动去编译那么多,把交叉编译工具链配置好就是弄好环境了。