创龙T113 SDK编译实战:从环境配置到疑难排错
1. 环境准备与依赖安装第一次接触创龙T113 SDK编译时我选择了非官方推荐的Ubuntu 20.04系统。这个决定让我踩了不少坑但也积累了宝贵经验。如果你也在用这个系统版本建议先准备好20GB以上的磁盘空间实测编译过程中临时文件会占用大量存储。依赖安装是第一个关键步骤。官方手册列出的软件包清单往往不够全面我在实际操作中发现还需要补充几个关键组件sudo apt-get install -y build-essential bison flex libncurses5-dev \ u-boot-tools python2.7 git-core g-multilib texinfo特别注意Python版本冲突这个经典问题。现代Ubuntu系统默认只安装Python3但T113 SDK需要Python2.7环境。解决方法很简单sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1 sudo update-alternatives --config python选择python2.7作为默认版本后建议运行python --version确认切换成功。这个操作会影响系统全局Python环境如果担心影响其他项目可以考虑使用virtualenv创建独立环境。2. SDK解压与初始配置拿到LinuxSDK-v1.2.tar.gz后不要直接用图形界面解压。我遇到过因权限问题导致后续编译失败的情况推荐用命令行操作mkdir -p ~/t113_sdk tar zxvf LinuxSDK-v1.2.tar.gz -C ~/t113_sdk --no-same-owner进入T113-i_v1.0目录后先执行./build.sh distclean清理可能存在的临时文件。这个步骤看似简单但能避免很多因残留文件导致的诡异错误。配置环节的./build.sh config命令会交互式询问多个参数处理器型号选择T113评估板型号对应tlt113-minievm-nand显示输出根据实际硬件选择工具链保持默认即可3. 编译过程中的典型错误处理3.1 gdbus编译错误首次编译大概率会遇到gdbus相关报错gdbusauth.c:1302:11: error: %s directive argument is null gdbusmessage.c:2702:30: error: %s directive argument is null这个问题源于glib库的版本兼容性问题。临时解决方案是修改报错位置的代码添加空指针检查// 在gdbusauth.c第1302行附近添加 if (some_string NULL) { some_string (null); }同样的逻辑也适用于gdbusmessage.c文件。虽然这不是最优雅的解决方案但能快速推进编译流程。建议完成编译后向官方反馈此问题。3.2 awk脚本语法问题接下来可能会遇到awk脚本报错\# is not a known regexp operator这个问题涉及多个.awk文件包括mkerrnos.awkmkerrcodes.awkmkerrcodes1.awkmkerrcodes2.awkmkstrtable.awk解决方法是将所有文件中sub(/\#./, );语句的正则表达式分隔符从\#改为#。可以使用sed命令批量替换find . -name *.awk -exec sed -i s/\\#/#/g {} \;3.3 libgpg-error库文件缺失最棘手的问题出现在buildroot阶段系统提示缺少errnos-sym.h文件。这个文件是libgpg-error库的核心组件缺失会导致编译中断。手动解决方案分三步创建errnos-sym.h文件内容可以从开源项目中获取将文件放置到指定目录cp errnos-sym.h out/t113_i/tlt113-minievm-emmc/longan/buildroot/build/libgpg-error-1.33/src/重新执行编译命令4. 编译优化与验证成功解决所有错误后可以尝试优化编译速度。我的经验是使用-j$(nproc)参数启用多核编译设置CCACHE_DIR环境变量启用ccache缓存关闭调试符号减少文件体积完整编译命令示例export CCACHE_DIR/path/to/ccache ./build.sh -j$(nproc)编译完成后在out/t113_i/tlt113-minievm-emmc/目录下可以找到生成的镜像文件。建议用md5sum校验文件完整性并通过TF卡或网络烧写到开发板验证功能。遇到烧写问题时检查串口终端输出是很好的排错手段。我通常会连接UART查看启动日志重点关注uboot阶段是否正常加载设备树和内核镜像。