Ubuntu 20.04下海思开发板环境搭建全攻略附常见报错解决方案作为一名嵌入式开发者第一次接触海思开发板时最令人头疼的莫过于环境搭建这个拦路虎。不同于普通的Linux开发环境海思开发板需要特定的交叉编译工具链、复杂的SDK配置以及各种依赖库的精确匹配。本文将带你从零开始在Ubuntu 20.04系统上搭建完整的海思开发环境并分享那些官方文档没告诉你的实用技巧和常见报错解决方案。1. 系统基础环境准备在开始安装海思SDK之前我们需要确保Ubuntu 20.04系统具备所有必要的开发工具和依赖库。这一步看似简单实则暗藏玄机——不同版本的Ubuntu对库文件的依赖关系可能截然不同。1.1 基础软件包安装首先更新系统并安装必备工具sudo apt update sudo apt upgrade -y sudo apt install -y build-essential git cmake接下来安装海思开发环境的核心依赖包sudo apt install -y make libc6-i386 lib32z1 lib32stdc6 \ zlib1g-dev libncurses5-dev ncurses-term libncursesw5-dev \ g u-boot-tools texinfo texlive gawk libssl-dev openssl \ bc p7zip-full gperf bison flex diffutils git unzip注意如果遇到无法定位软件包错误请先执行sudo apt update更新软件源列表。1.2 解决64位系统兼容性问题64位Linux系统上编译某些第三方库时可能会失败需要创建并清空/etc/ld.so.preload文件sudo touch /etc/ld.so.preload sudo chmod 644 /etc/ld.so.preload echo | sudo tee /etc/ld.so.preload1.3 特殊工具链依赖处理海思开发板的mtd-utils工具需要额外依赖sudo apt install -y zlib1g-dev liblzo2-dev uuid-dev pkg-config automake设置pkg-config工具搜索路径export PKG_CONFIG_PATH$PKG_CONFIG_PATH:/usr/lib/x86_64-linux-gnu/pkgconfig建议将这行命令添加到~/.bashrc文件中使其永久生效。2. Python环境配置海思SDK中的多个组件依赖特定版本的Python环境这是最容易出问题的环节之一。2.1 Python 3.7安装虽然Ubuntu 20.04自带Python 3.8但海思SDK推荐使用Python 3.7.6sudo apt install -y python3.7 python3.7-dev python3.7-venv创建Python 3.7虚拟环境python3.7 -m venv ~/venv/hisi source ~/venv/hisi/bin/activate2.2 必备Python包安装在虚拟环境中安装必要的Python包pip install --upgrade pip pip install wheel pycryptodome pyelftools kconfiglib提示如果遇到SSL证书错误可以尝试pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org参数。3. 交叉编译工具链安装海思开发板使用ARM架构处理器需要在x86主机上安装交叉编译工具链。3.1 工具链获取与安装通常SDK包中会包含交叉编译工具链文件名为aarch64-mix210-linux.tgz。解压并安装tar -xvf aarch64-mix210-linux.tgz cd aarch64-mix210-linux sudo ./aarch64-mix210-linux.install安装完成后需要将工具链路径添加到系统环境变量中。编辑/etc/profile文件sudo nano /etc/profile在文件末尾添加路径根据实际安装位置调整export PATH/opt/hisi-linux/x86-arm/aarch64-mix210-linux/bin:$PATH使环境变量立即生效source /etc/profile3.2 工具链验证输入以下命令验证工具链是否安装成功aarch64-mix210-linux-gcc --version如果看到类似以下输出说明安装成功aarch64-mix210-linux-gcc (Hisilicon_v500) 7.3.04. 海思SDK安装与配置4.1 SDK解压与展开假设SDK包名为SS928V100_SDK_Vx.x.x.x.tgz执行以下命令tar -zxf SS928V100_SDK_Vx.x.x.x.tgz cd SS928V100_SDK_Vx.x.x.x ./sdk.unpack这个过程可能会花费几分钟时间取决于你的系统性能。4.2 文件权限调整为避免后续编译权限问题建议修改SDK目录所有者sudo chown -R $USER:$USER .4.3 编译固件进入osdrv目录开始编译cd osdrv make all注意首次编译可能需要较长时间30分钟到数小时不等取决于你的CPU性能。5. 常见报错与解决方案5.1 libisl.so.19缺失错误在Ubuntu 22.04上可能会遇到error while loading shared libraries: libisl.so.19: cannot open shared object file解决方案是创建符号链接sudo ln -s /usr/lib/x86_64-linux-gnu/libisl.so.22 /usr/lib/x86_64-linux-gnu/libisl.so.195.2 Kconfiglib缺失错误如果编译时提示Kconfiglib相关错误ModuleNotFoundError: No module named kconfiglib确保在正确的Python环境中安装了kconfiglibpip install kconfiglib5.3 Python版本冲突当遇到Python版本相关错误时检查当前Python版本python --version如果版本不正确确保激活了正确的虚拟环境或者使用python3.7明确指定版本。5.4 工具链路径问题如果遇到command not found错误检查工具链路径是否正确添加到PATH中echo $PATH如果缺少工具链路径重新执行source /etc/profile或手动添加路径。6. 高级配置技巧6.1 并行编译加速为加快编译速度可以使用-j参数指定并行任务数通常为CPU核心数1make all -j$(($(nproc)1))6.2 选择性编译如果只需要编译特定组件可以指定目标make BOOT # 仅编译bootloader make KERNEL # 仅编译内核6.3 清理构建需要重新构建时先清理之前的构建结果make clean或者彻底清理make distclean7. 开发环境优化建议7.1 使用ccache加速编译安装ccache并配置sudo apt install ccache在~/.bashrc中添加export CCACHE_DIR/home/$USER/.ccache export PATH/usr/lib/ccache:$PATH7.2 配置SSH远程开发为方便开发可以配置SSH免密登录ssh-keygen -t rsa ssh-copy-id userremote_host7.3 使用tmux保持会话安装tmux管理长时间运行的编译任务sudo apt install tmux tmux new -s hisi_build8. 固件烧写与测试编译完成后固件通常位于osdrv/pub/目录下。烧写方法取决于具体开发板型号一般有以下几种方式TFTP网络烧写适合频繁更新的开发阶段USB烧写适合首次烧写或恢复系统SD卡烧写适合无网络环境具体烧写步骤请参考开发板配套文档。烧写完成后通过串口连接开发板观察启动日志确认系统正常运行。