根据您提供的错误信息,问题是由于 kconfiglib 版本与 RT-Thread 构建系统不兼容引起的。错误 AttributeError: 'str' object has no attribute 'load_config' 表明代码尝试在字符串对象上调用 load_config 方法(应为 Kconfig 对象),根本原因是新版 kconfiglib 修改了 API。
RT-Thread v4.1.0 需要 kconfiglib<=14.1.0(旧版 API)。执行以下命令:
pip3 install kconfiglib==14.1.0若已安装新版,先卸载:
pip3 uninstall kconfiglib
pip3 install kconfiglib==14.1.0若您使用的 RT-Thread 版本较旧,升级到最新版本(v4.1.2+)可解决兼容性问题:
cd /home/rt-thread-v4.1.0
git pull origin master # 更新代码
git checkout v4.1.2 # 或切换至更新版本最新代码已适配新版 kconfiglib 的 API 改动。
通过 RT-Thread 的官方环境工具管理依赖:
source ~/.env/env.sh # 激活 Env 环境
menuconfig # 直接使用 Env 内置命令Env 工具会自动处理兼容性问题。
修改错误文件 /home/rt-thread-v4.1.0/tools/building.py:
# 第 384 行附近:将旧版用法替换为
import menuconfig
menuconfig.menuconfig()此修改需同步适配 menuconfig.py 的其他逻辑,建议优先选择前三种方案。
scons --menuconfig # 成功运行应弹出配置界面| 方案 | 推荐度 | 操作复杂度 | 适用场景 |
|---|---|---|---|
| 降级 kconfiglib | ★★★★ | 简单 | 旧版项目快速修复 |
| 更新 RT-Thread 代码 | ★★★★☆ | 中等 | 长期维护项目 |
| 使用 Env 工具 | ★★★★★ | 低(需安装) | 官方推荐标准流程 |
| 手动修改脚本 | ★★ | 高 | 紧急调试(不推荐) |
建议优先降级库或使用 Env 工具。若问题仍未解决,检查环境变量
RTT_ROOT是否指向正确的 SDK 根目录(即/home/rt-thread-v4.1.0),并确认 Python 路径无冲突。
举报
更多回帖