编译前环境准备
我采用树莓派当我的编译服务器,起内置的编译器够我编译64位的orangepipc2的镜像
可以看到我的gcc版本还是蛮高的10.2的版本
uboot编译
下载uboot的源码后执行编译脚本发现出现个问题
#!/bin/sh
echo -----hello ak !!!
echo -----now start compile
echo "*****Clear Projrct*****"
#make distclean
echo "*****export arrch64 *****"
export CROSS_COMPILE=aarch64-linux-gnu-
export ARCH=arm64
echo "*****ORGpipc2 Config*****"
make orangepi_pc2_defconfig
echo *****make*****
make
date
echo "-----Compile Ending"
出现yylloc重定义问题:
解决方法:
- 我之前下载6.3版本的gcc编译没问题,可以选择更换编译器
- 我没找到低版本的aarch arm平台的编译器,如下修改代码
- 添加一个extern
修改后还有如下问题
修改 scripts/Makefile.lib 第 321 行去掉转义符
sunxi-tool工具的编译
这个是我之前做的在x86平台做的工具,现在在树莓派上重新做一遍,步骤一样,
安装依赖的工具sudo apt install libusb-1.0-0-dev libz-dev libfdt-dev -y
- 下载安装sunxitool工具
- 安装usb库
sudo apt-get install libusb-1.0-0-dev - 下载sunxi-tool源码或者网网盘下载
git clone git@gitee.com:kalaneryok/sunxi-tools.git - 编译详情可以看github上面的readme
make tools
失败-----zlib-------- sudo apt-get install zlib1g-dev
etc/profile 。bashrc里面修改path
sudo make install-tools 安装到/usr/local/bin目录下
4.或者去百度云吧自己做的sunxi_tools_bin.tar//放到local bin 下解压
- 安装usb库
kernel编译
安装编译依赖
sudo apt install bison flex libssl-dev bc -y
2.make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- defconfig
/bin/sh: 1: bison: not found,,安装 sudo apt-get install bison
/bin/sh: 1: flex: not found sudo apt-get install flex
fatal error: openssl/bio.h: 没有那个文件或目录 sudo apt-get install libssl-dev
3.make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- dtbs
dtb文件在arch/arm64/boot/dts/相关平台的目录下
Image则在arm64/boot下
这个报错和上面uboot的修改一样
文件有点差异
rootfs编译
sudo apt-get install libncurses5-dev libncursesw5-dev
库上的rootfs编译是可以的只不过我的树莓派里面的glibc版本较高编译报错
我目前的busybox 的版泵1.30.0,所以我们升级下busybox版本即可
我升级完1.35.0 编译就没问题了
注意点修改了平台记得busybox运行依赖的库要重新拉,保证编译kernel用的库以及busybox的库和运行时是一致的。
拷贝树莓派本地的一些依赖库后
板子可以正常运行