2. SDK编译环境搭建¶
海思官方建议Linux4.19_SDK使用的编译主机Linux系统为Ubuntu18.04 LTS,而HiSpark社区建议Linux6.6_SDK使用Ubuntu22.04 LTS。
综合需求和实际开发验证,LubanCat_Hi3403的开发过程中使用的环境为Ubuntu20.04,可以兼顾两个版本SDK的开发。建议用户使用Ubuntu20.04,与LubanCat开发环境保持一致。
2.1. Linux系统配置¶
需要对Linux系统环境进行配置,设置环境变量,安装依赖软件包等
配置默认shell解释器为bash
1 | sudo dpkg-reconfigure dash
|
执行命令后弹出的对话框选择 否
如果没有配置,在编译时会报错找不到 pushd 命令
安装软件包
1 2 3 4 5 6 7 8 9 | # 更新软件包列表
sudo apt update -y
# 安装软件包
sudo apt install -y make libc6-i386 lib32z1 lib32stdc++6 zlib1g-dev \
libncurses5-dev ncurses-term libncursesw5-dev g++ u-boot-tools texinfo \
gawk libssl-dev openssl bc p7zip-full gperf bison flex diffutils git \
unzip python3-pip libffi-dev libtool libfreetype6 fakeroot autopoint \
po4a wget vim openssh-server net-tools
|
创建/etc/ld.so.preload文件
1 2 | # 解决64bit Linux server上某些第三方库编译失败的问题
sudo bash -c "echo '' > /etc/ld.so.preload"
|
安装python3.x.x、 pip3、 wheel、 pycryptodome、pyelftools库
1 2 3 | sudo pip3 install wheel -i https://pypi.tuna.tsinghua.edu.cn/simple
sudo pip3 install pycryptodome -i https://pypi.tuna.tsinghua.edu.cn/simple
sudo pip3 install pyelftools -i https://pypi.tuna.tsinghua.edu.cn/simple
|
设置默认python版本为python3
1 | sudo ln -sf /usr/bin/python3 /usr/bin/python
|
以上是Linux4.19_SDK和Linux6.6_SDK都需要安装的依赖。 由于Linux4.19_SDK还使用了一些第三方开源组件,在编译前还需要安装下面的工具, 如果仅使用Linux6.6_SDK则可以跳过下面依赖的安装。
安装SDK中开源组件mtd-utils依赖
1 2 3 | sudo apt install -y zlib1g-dev liblzo2-dev uuid-dev pkg-config automake
export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/lib/x86_64-linux-gnu/pkgconfig"
|
安装SDK中开源组件e2fsprogs依赖
1 | sudo apt install -y texlive
|
安装LiteOS编译需要的工具,包括python、pip 和 kconfiglib
1 | sudo pip3 install kconfiglib -i https://pypi.tuna.tsinghua.edu.cn/simple
|
2.2. Ubuntu根文件系统构建工具安装¶
如果要使用SDK构建Ubuntu根文件系统镜像,还需要安装Ubuntu项目中的特定版本离线软件包。
Linux4.19_SDK和Linux6.6_SDK使用同样的Ubuntu构建脚本,所以进入任意版本SDK的open_source/ubuntu目录中,运行下面的命令进行安装。
1 2 3 | sudo apt-get install binfmt-support qemu-user-static
sudo dpkg -i ubuntu-build-service/packages/*
sudo apt-get install -f
|
2.3. 交叉编译工具安装¶
根据使用的SDK版本安装对应的交叉编译工具,如果同时使用两个版本的SDK,则都安装。
2.3.1. Linux4.19_SDK¶
2.3.1.1. 安装arm64交叉编译工具¶
从网盘资源 4-SDK源码压缩包/交叉编译环境/LubanCat_Hi3403_Linux4.19_SDK 中获取aarch64-mix210-linux.tgz压缩包, 使用以下命令安装交叉编译工具。
1 2 3 4 5 6 7 8 9 10 | # 解压压缩包
tar -xvf aarch64-mix210-linux.tgz
# 安装
cd aarch64-mix210-linux/
sudo ./aarch64-mix210-linux.install
# 配置环境变量
echo "export PATH="/opt/linux/x86-arm/aarch64-mix210-linux/bin:\$PATH"" >> ~/.bashrc
source ~/.bashrc
|
使用 aarch64-mix210-linux-gcc -v 命令查看aarch64-mix210-linux-gcc的版本,来验证是否安装成功。
出现图中的信息,则说明安装成功
2.3.1.2. 安装riscv交叉编译工具¶
从网盘资源 4-SDK源码压缩包/交叉编译环境/LubanCat_Hi3403_Linux4.19_SDK 中获取cc-riscv32-cfg5-musl-20211008-elf.tar.gz压缩包, 使用以下命令安装交叉编译工具。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | # 解压压缩包
tar -xvf cc-riscv32-cfg5-musl-20211008-elf.tar.gz
# 进入install.sh脚本所在目录
cd cc-riscv32-cfg5-musl-20211008-elf/
# 使用脚本安装工具链
./install.sh
# 进入工具链安装目录
cd ./cc-riscv32-cfg5-musl-20211008-elf/
# 获取工具链安装目录路径
pwd
# pwd返回
/home/dev/cc-riscv32-cfg5-musl-20211008-elf/cc-riscv32-cfg5-musl-20211008-elf
# 配置工具链路径
# 用上面获取的路径替换PATH="到/bin:\$PATH"中间的内容
echo "export PATH="/home/dev/cc-riscv32-cfg5-musl-20211008-elf/cc-riscv32-cfg5-musl-20211008-elf/bin:\$PATH"" >> ~/.bashrc
source ~/.bashrc
|
注意,cc-riscv32-cfg5-musl-20211008-elf被安装到了运行install.sh的目录下,设置环境变量时,要设置对应的目录。
使用 riscv32-cfg5-musl-20211008-elf-gcc -v 命令查看riscv32-cfg5-musl-20211008-elf-gcc的版本,来验证是否安装成功。
出现图中的信息,则说明安装成功
2.3.2. Linux6.6_SDK¶
可以访问 https://gitee.com/openeuler/yocto-meta-openeuler/releases 下载 openEuler Embedded Toolchains V0.1.8 中的序号为1到4,名称为openeuler_gcc_arm64le.tar.gz的4个压缩包
也可以从网盘资源 4-SDK源码压缩包/交叉编译环境/LubanCat_Hi3403_Linux6.6_SDK 中获取这4个压缩包。
将交叉编译工具的压缩包传输到编译主机中,使用以下命令安装交叉编译工具。
1 2 3 4 5 6 7 8 9 | # 将拆分的4个压缩包合并为1个
cat 1_openeuler_gcc_arm64le.tar.gz 2_openeuler_gcc_arm64le.tar.gz 3_openeuler_gcc_arm64le.tar.gz 4_openeuler_gcc_arm64le.tar.gz > openeuler_gcc_arm64le.tar.gz
# 解压合并后的压缩包到系统目录
sudo tar -xzf openeuler_gcc_arm64le.tar.gz -C /opt/linux/x86-arm/
# 配置环境变量
echo "export PATH="/opt/linux/x86-arm/openeuler_gcc_arm64le/bin:\$PATH"" >> ~/.bashrc
source ~/.bashrc
|
使用 aarch64-openeuler-linux-gnu-gcc -v 命令查看aarch64-openeuler-linux-gnu-gcc 的版本,来验证是否安装成功。
出现图中的信息,则说明安装成功
2.3.2.1. 安装arm64交叉编译工具¶
2.4. 补全依赖库¶
使用Ubuntu20.04的系统编译SDK,编译时会缺少依赖库,还需要手动安装此依赖库。
从网盘资源 4-SDK源码压缩包/交叉编译环境 中可以获取isl-0.19.tar.xz压缩包
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | # 安装依赖包
sudo apt install -y libgmp-dev
# 下载或使用网盘中的源代码压缩包
wget https://sourceforge.net/projects/libisl/files/isl-0.19.tar.xz/download -O isl-0.19.tar.xz
# 解压压缩包
tar xf isl-0.19.tar.xz
# 编译
cd isl-0.19
./configure --prefix=$HOME/.isl-0.19
make -j$(nproc)
# 安装
make install
# 设置环境变量
echo 'export LD_LIBRARY_PATH="$HOME/.isl-0.19/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"' >> ~/.bashrc
source ~/.bashrc
# 验证
ldd /opt/linux/x86-arm/aarch64-mix210-linux/libexec/gcc/aarch64-linux-gnu/7.3.0/cc1
# 查看libisl.so.19是否指向正确的路径
libisl.so.19 => /home/dev/.isl-0.19/lib/libisl.so.19
|
