在Ubuntu 20.04上搞定创龙T113 SDK编译:我踩过的那些Python和gdbus的坑 📅 发布时间:2026/7/11 19:43:51 👁️ 浏览次数: 在Ubuntu 20.04上搞定创龙T113 SDK编译我踩过的那些Python和gdbus的坑嵌入式开发总是充满惊喜——尤其是当你决定不走寻常路在非官方推荐环境下折腾SDK编译时。作为一款性价比突出的国产处理器全志T113在创龙开发板上展现出的潜力吸引了不少开发者。但当你兴冲冲地在Ubuntu 20.04上展开工作时很快就会发现官方手册里没写的那些隐藏关卡正等着你。本文将带你直击三个最具代表性的编译陷阱Python版本的地雷阵、gdbus的null指针谜题以及awk脚本的语法暗礁。1. 环境准备当现代Linux遇上传统工具链创龙官方推荐使用定制化Ubuntu镜像但很多开发者更习惯在标准LTS系统上工作。我的Ubuntu 20.04初始环境就遇到了第一个下马威——Python版本冲突。现代Linux发行版普遍将python命令指向Python 3而老牌嵌入式SDK往往固执地需要Python 2。诊断过程$ python --version Command python not found... $ ls -l /usr/bin/python* lrwxrwxrwx 1 root root 9 Apr 5 2020 /usr/bin/python3 - python3.8解决方案看似简单实则暗藏玄机sudo rm -f /usr/bin/python # 清除已有链接 sudo ln -s /usr/bin/python2 /usr/bin/python但要注意这会影响系统级Python脚本。更稳妥的做法是修改SDK中的脚本显式调用python2。我在build.sh中发现了几处硬编码的python调用将其改为python2后既解决了问题又避免污染系统环境。2. gdbus编译错误当安全检查遇上激进优化进入编译阶段后gdbus相关错误突然杀出gdbusauth.c:1302:11: error: ‘%s’ directive argument is null gdbusmessage.c:2702:30: error: ‘%s’ directive argument is null这些错误源于Glibc 2.34引入的格式字符串安全检查。现代编译器会对printf类函数进行严格检查而SDK中的老代码未能通过这项检测。修复方案对比修改方式优点风险添加NULL检查代码健壮性高需要修改多处禁用警告改动量小掩盖潜在问题替换格式说明符兼容性好可能影响日志格式我选择了最彻底的方案——在gdbusauth.c第1302行和gdbusmessage.c第2702行添加NULL检查// 修改前 g_debug(Auth response: %s, response); // 修改后 if (response) { g_debug(Auth response: %s, response); } else { g_debug(Auth response: (null)); }3. awk脚本陷阱正则表达式的方言战争当你以为胜利在望时buildroot阶段又抛出神秘错误\# is not a known regexp operator这个问题源于不同awk实现的正则表达式方言差异。GNU awk(gawk)能识别\#转义但更严格的实现会报错。受影响的脚本文件mkerrnos.awkmkerrcodes.awkmkerrcodes1.awkmkerrcodes2.awkmkstrtable.awk统一修改方案是将所有sub(/\#./, );替换为sub(/#./, ); # 移除转义反斜杠4. 幽灵文件之谜自动生成机制的失效最棘手的错误出现在最后阶段——系统提示errnos-sym.h文件为空或不存在。这个本应由脚本自动生成的文件竟然缺席了。解决步骤在CSDN上找到相似案例的解决方案手动创建errnos-sym.h文件将其放置到指定目录/home/[user]/T113/T113-i_v1.0/out/t113_i/tlt113-minievm-emmc/longan/buildroot/build/libgpg-error-1.33/src关键点在于理解这个文件的用途——它是libgpg-error的一部分包含错误码到字符串的映射关系。虽然手动解决方案可行但更好的做法是修复自动生成机制# 进入buildroot目录 cd buildroot # 清理并重新生成 make clean make经过这四轮攻防战最终在标准Ubuntu 20.04上成功完成了T113 SDK的完整编译。整个过程教会我的不仅是具体问题的解决方法更重要的是嵌入式开发中的排查思路从错误信息出发结合系统差异分析最后选择对系统影响最小的解决方案。下次当你遇到类似的非官方环境挑战时不妨记住这三个原则版本兼容性检查、编译器行为差异、自动化流程验证。
误删Anaconda?3步抢救数据指南 Anaconda被误删后抢救手册大纲数据恢复基础检查回收站或垃圾箱,查看是否可以通过简单还原操作恢复Anaconda目录 使用文件恢复工具如Recuva、TestDisk扫描磁盘,尝试恢复被删除的文件重新安装Anaconda从Anaconda官网下载最新安装包,选择与原有环… 2026/5/17 1:27:51
用PyTorch-Lightning Trainer实现模型训练全流程自动化:以图像分类为例 用PyTorch-Lightning Trainer实现模型训练全流程自动化:以图像分类为例 在计算机视觉项目的实际开发中,模型训练环节往往充斥着大量重复性代码——从数据加载、训练循环到验证评估,开发者需要不断重写相似的流程。这不仅降低了开发效率&#… 2026/5/5 21:14:20
5G技术解析:深入理解5GNR帧结构与空口资源分配 1. 5GNR帧结构的设计原理 第一次接触5GNR帧结构时,我被那些密密麻麻的时隙和符号搞得头晕眼花。但真正理解后才发现,这套设计就像乐高积木一样精巧。5GNR帧结构延续了4G LTE的10ms帧和1ms子帧设计,但玩出了更多花样。 最关键的改变在于时隙灵… 2026/5/6 6:29:13
LLM API 请求级缓存:语义哈希去重与分层缓存的工程化降本方案 LLM API 请求级缓存:语义哈希去重与分层缓存的工程化降本方案 一、同一个问题换了三种问法,API 费用翻了三倍——LLM 调用的重复浪费 在生产环境中引入 LLM 后,一个容易被忽视的成本黑洞是重复请求。用户在对话中反复追问同一类型的问题&… 2026/7/11 19:42:11
CUDA 性能优化实战:从 Stream 管理到 Kernel 融合,吞吐提升 30% 实测 CUDA 性能优化实战:从 Stream 管理到 Kernel 融合,吞吐提升 30% 实测当你在深夜盯着屏幕上缓慢运行的 CUDA 程序,看着 GPU 利用率在 30% 徘徊时,是否曾想过那些被浪费的算力究竟去了哪里?作为一位经历过无数次性能调优… 2026/7/11 19:42:11
【10万字长文】生产级 AI Agent 系统架构实战:模块详解 + 可运行代码 + Kubernetes 部署 1. 引言 2024 年以来,基于大语言模型的 AI Agent 已从实验性 demo 快速走向企业级应用。但要构建一套能在生产环境稳定运行、支撑复杂业务、同时具备良好可扩展性与可观测性的 Agent 系统,仅靠 LangChain 或 AutoGPT 的“玩具级”脚手架远远不够。本文将系统性地拆解生产级 … 2026/7/11 19:38:09
MAX77654与STM32F410RB的低功耗电源管理方案 1. 项目背景与核心器件选型在嵌入式系统开发中,电源管理一直是决定产品可靠性和续航能力的关键因素。我们这次要实现的方案,采用了MAX77654电源管理IC与STM32F410RB微控制器的组合,这个搭配在低功耗物联网设备、便携式医疗仪器等领域有着广泛… 2026/7/11 19:38:09
Fiddler Classic 5.0 移动端HTTPS抓包:3步解决证书信任与Tunnel to问题 Fiddler Classic 5.0 移动端HTTPS抓包实战:证书信任与Tunnel to问题深度解析1. 为什么HTTPS抓包在移动端如此棘手?当你第一次尝试用Fiddler抓取移动端HTTPS流量时,大概率会遇到两种令人头疼的情况:要么看到满屏的Tunnel to连接&am… 2026/7/11 19:38:09
MA12070音频放大器与MK20微控制器系统设计解析 1. MA12070音频放大器IC深度解析MA12070是英飞凌推出的一款高效集成D类音频放大器芯片,采用多级开关技术,在4-26V供电范围内可提供280W的峰值输出功率。这款芯片最突出的特点是其"多级切换"架构,与传统D类放大器相比,这… 2026/7/11 19:38:09
5分钟搞定Kodi字幕难题:智能字幕插件让你追剧无忧 [特殊字符] 5分钟搞定Kodi字幕难题:智能字幕插件让你追剧无忧 🎬 【免费下载链接】zimuku_for_kodi Kodi 插件,用于从「字幕库」网站下载字幕 项目地址: https://gitcode.com/gh_mirrors/zi/zimuku_for_kodi 还记得那个深夜吗?你刚下载… 2026/7/11 0:00:11
工业信号干扰处理与FOD4216光耦应用实战 1. 工业环境中的信号干扰挑战在工业自动化领域,信号采集的准确性直接关系到整个控制系统的可靠性。典型的工业现场充斥着各种干扰源:大功率电机启停产生的电磁干扰、变频器工作产生的高频噪声、继电器触点火花放电,以及长距离传输引入的共模干… 2026/7/11 0:00:11
OpenHarmony 完整项目工程整合规范 + 模块化分层架构(API23+ 标准企业级结构) 摘要前面系列教程覆盖了 ArkUI 组件、路由、生命周期、本地存储、网络请求、Ability 底层全套基础能力,本篇统一梳理标准工程目录分层、模块化拆分、代码复用规范、全局工具统一管理、项目打包权限配置、常见工程报错统一解决方案,形成可直接用于课程设计… 2026/7/11 0:00:11
6个月转型AI工程师:实战路径与核心技能 1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公… 2026/7/11 14:53:30
TPAFE0808与PIC18F87K22的多通道信号采集方案 1. 项目背景与核心需求在工业自动化、医疗设备和科研仪器等领域,多通道信号采集与系统监测是基础且关键的技术需求。传统方案往往面临通道数量不足、信号调理复杂、系统集成度低等问题。TPAFE0808作为一款8通道模拟前端芯片,与PIC18F87K22微控制器的组合… 2026/7/11 12:30:52
STC3115与PIC18LF26K80构建高精度电池管理系统 1. STC3115与PIC18LF26K80在电池管理系统中的核心价值在现代电子设备中,电池管理系统(BMS)的重要性不亚于设备的核心处理器。STC3115作为一款高精度电池电量监测IC,与PIC18LF26K80微控制器的组合,构成了一个既能精确监控又能智能管理的完整解… 2026/7/11 15:29:59