1. 编译环境搭建¶
海思官方建议使用的Linux系统为Ubuntu18.04 LTS,LubanCat_Hi3403_SDK开发过程中使用的环境为Ubuntu20.04,建议使用Ubuntu20.04,与LubanCat开发环境保持一致。
1.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 openssh-server net-tools
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
|
创建/etc/ld.so.preload文件
1 | sudo bash -c "echo '' > /etc/ld.so.preload"
|
解决64bit Linux server上某些第三方库编译失败的问题
安装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
|
安装SDK开源组件optee依赖 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
|
1.2. 交叉编译工具安装¶
1.2.1. 安装arm64交叉编译工具¶
从网盘资源 4-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的版本,来验证是否安装成功。
出现图中的信息,则说明安装成功
1.2.2. 安装riscv交叉编译工具¶
从网盘资源 4-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 | # 解压压缩包
tar -xvf cc-riscv32-cfg5-musl-20211008-elf.tar.gz
# 安装工具链。
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的版本,来验证是否安装成功。
出现图中的信息,则说明安装成功
1.3. 补全依赖库¶
如果使用非Ubuntu18.04的系统编译,编译时会缺少依赖库,手动安装此依赖库。
从网盘资源 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 | # 安装依赖包
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是否指向正确的路径
|
