当前位置: 首页 > news >正文

Nanopct6SDK问题汇总与解决方案

📋 今日问题汇总与解决方案

🎯 问题概览

今天共遇到 8个主要问题,涉及以下技术领域:

  • Git网络配置 (2个问题)
  • Shell脚本执行 (1个问题)
  • 内核编译 (4个问题)
  • 代码调试 (1个问题)

📝 详细问题记录

1. Git网络连接问题 ⚡

问题描述: 无法访问远程Git仓库

fatal: 无法访问 'https://github.com/friendlyarm/kernel-rockchip/':Failed to connect to 192.168.1.120 port 7890 after 3084 ms: 没有到主机的路由
fatal: 无法访问 'https://github.com/friendlyarm/kernel-rockchip/':Failed to connect to 127.0.0.1 port 7890 after 0 ms: 连接被拒绝
fatal: 无法访问 'https://github.com/friendlyarm/kernel-rockchip/':gnutls_handshake() failed: The TLS connection was non-properly terminated

根本原因: 代理配置错误或网络连接问题

解决步骤:

# 1. 检查当前代理设置
git config --global --get http.proxy# 2. 清除错误的代理设置
git config --global --unset http.proxy
git config --global --unset https.proxy# 3. 重新设置正确的代理
git config --global http.proxy http://127.0.0.1:7890
git config --global http.sslVerify false# 4. 测试连接
git fetch origin

学习要点: Git代理配置的重要性,SSL验证的关闭方法


2. Shell脚本执行问题 🔧

问题描述: 脚本无法执行

-bash: ./mk-emmc-image.sh: /bin/bash^M: 错误的解释器: 没有那个文件或目录
: 无效的选项h: 第 2 行: set: -

根本原因: Windows格式的CRLF行结束符

解决步骤:

# 1. 检查文件格式
file mk-emmc-image.sh# 2. 转换单个文件
sed -i 's/\r$//' mk-emmc-image.sh# 3. 批量转换所有文件
find . -type f -exec dos2unix {} \;# 4. 验证转换结果
file mk-emmc-image.sh

学习要点: Windows和Unix行结束符的区别,文件格式转换工具的使用


3. Git克隆权限问题 🔐

问题描述: 使用sudo时无法克隆仓库

fatal: 无法访问 'https://github.com/friendlyarm/r8125/':Failed to connect to github.com port 443 after 136320 ms: 连接超时

根本原因: sudo使用root用户环境,没有配置代理

解决步骤:

# 为root用户设置代理
sudo git config --global http.proxy http://127.0.0.1:7890
sudo git config --global http.sslVerify false# 验证克隆
sudo git clone https://github.com/friendlyarm/r8125

学习要点: 不同用户环境的配置隔离,sudo权限的影响


4. 内核编译权限问题 🛠️

问题描述: 编译时出现权限不足错误

/bin/sh: 1: cannot create include/config/.kernel.release.tmp: Permission denied

根本原因: 文件所有权被sudo操作改变

解决步骤:

# 修改文件所有权
sudo chown -R $(whoami):$(whoami) .

学习要点: Linux文件权限和所有权的概念


5. 内核编译autoconf.h缺失问题 📁

问题描述: 编译时缺少必要的配置文件

fatal error: generated/autoconf.h: 没有那个文件或目录

根本原因: 内核配置不完整或编译环境被污染

解决步骤:

# 1. 清理编译环境
make mrproper# 2. 重新配置内核
make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 nanopi6_linux_defconfig# 3. 重新编译
make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 nanopi6-images -j$(nproc)

学习要点: 内核编译的完整流程,配置文件的生成机制


6. 内核编译cryptodev模块权限问题 🔑

问题描述: 编译第三方模块时出现权限错误

mkdir: 无法创建目录 "/home/keqikeji/nanopct6/sd-fuse_rk3588-master/out/cryptodev-linux/.tmp_1415981": 权限不够

根本原因: 输出目录权限不足

解决步骤:

# 修改整个项目目录的权限
sudo chown -R $(whoami):$(whoami) /home/keqikeji/nanopct6/sd-fuse_rk3588-master/out/

学习要点: 第三方模块编译的权限要求


7. Deb包创建权限问题 📦

问题描述: 无法创建deb包文件

dpkg-deb: 错误: 无法创建 ../linux-headers-5.10.160_5.10.160-1_arm64.deb: 权限不够

根本原因: 整个项目目录权限不足

解决步骤:

# 修改整个项目目录的权限
sudo chown -R $(whoami):$(whoami) /home/keqikeji/nanopct6/

学习要点: Deb包创建的权限要求


8. 链表反转算法代码问题 💻

问题描述: test_solution.c中的链表反转算法出现无限循环

根本原因: 第4步 current = next; 被注释掉,导致指针无法前进

解决步骤:

// 修复前(错误)
// current = next;// 修复后(正确)
current = next;

学习要点: 指针操作的逻辑,算法步骤的完整性


🔧 常用命令速查表

Git操作

git status                    # 检查状态
git fetch origin             # 获取远程更新
git stash                    # 暂存本地修改
git merge origin/branch      # 合并远程分支
git stash pop                # 恢复本地修改
git config --global --get http.proxy    # 检查代理设置
git config --global --unset http.proxy  # 清除代理设置

内核编译

export CROSS_COMPILE=aarch64-linux-gnu-  # 设置交叉编译工具链
export ARCH=arm64                        # 设置架构
make mrproper                           # 清理编译环境
make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 nanopi6_linux_defconfig  # 配置内核
make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 nanopi6-images -j$(nproc)  # 编译内核

权限修复

sudo chown -R $(whoami):$(whoami) .     # 修改当前目录所有权
sudo chown -R $(whoami):$(whoami) /path/to/directory  # 修改指定目录所有权

文件格式转换

file filename                # 检查文件格式
sed -i 's/\r$//' filename   # 转换单个文件
find . -type f -exec dos2unix {} \;  # 批量转换所有文件

📚 创建的文档

  1. GIT_OPERATION_GUIDE.md - 完整的Git操作指南
  2. PROJECT_STRUCTURE.md - 项目目录结构说明
  3. GIT_INDEX.md - Git文档导航索引
  4. FPGA_Verilog_入门语法.md - Verilog基础语法教程
  5. 今日问题汇总.md - 本文档

🎯 学习要点总结

技术要点

  1. 网络配置: Git代理设置的重要性
  2. 文件格式: Windows和Unix行结束符的区别
  3. 权限管理: Linux文件权限和所有权的概念
  4. 编译流程: 内核编译的完整流程和常见问题
  5. 算法调试: 代码逻辑错误的识别和修复

方法论

  1. 问题排查: 从网络→权限→配置→代码逻辑的系统化排查方法
  2. 文档记录: 及时记录问题和解决方案,便于后续参考
  3. 环境隔离: 不同用户环境(普通用户vs root)的配置差异
  4. 工具使用: 善用系统工具(file, sed, find等)进行问题诊断和修复

📈 项目进展状态

  • ✅ Git操作流程完整记录
  • ✅ 内核编译环境配置完成
  • ✅ 链表反转算法修复完成
  • ✅ 项目文档体系建立
  • 🔄 内核编译进行中(遇到权限问题)
  • ⏳ 镜像制作待完成

💡 经验总结

  1. 权限问题是Linux编译的最大障碍 - 80%的编译问题都与权限相关
  2. 网络配置需要全局考虑 - 不仅要配置普通用户,还要考虑sudo环境
  3. 文件格式转换是跨平台开发的必备技能 - Windows和Linux的文件格式差异
  4. 系统化的问题记录方法 - 及时记录问题、原因、解决方案,形成知识库
  5. 工具链的完整配置 - 内核编译需要完整的环境配置和权限设置

🔮 后续建议

  1. 创建自动化脚本 - 将常用的权限修复和编译命令脚本化
  2. 建立环境检查清单 - 编译前检查网络、权限、工具链等
  3. 完善错误处理机制 - 针对常见错误建立快速修复流程
  4. 定期更新文档 - 随着项目进展持续更新问题解决方案
http://www.dtcms.com/a/299073.html

相关文章:

  • 【架构】Docker简单认知构建
  • 【工程化】浅谈前端构建工具
  • Python爬虫实战:研究purl库相关技术
  • Mistral AI开源 Magistral-Small-2507
  • 密码学系列 - 密钥派生
  • 界面规范3-列表下
  • “给予” 超越 “莲花”,支持图片在线编辑
  • AI是否会终结IT职业?深度剖析IT行业的“涌现”与重构
  • 【GaussDB】构建一个GaussDB的Docker镜像
  • 【GaussDB】如何从GaussDB发布包中提取出内核二进制文件
  • window下MySQL安装(二)疑难解答
  • Apache Doris Data Agent 解决方案:开启智能运维与数据治理新纪元
  • excel删除重复项场景
  • Java面试题及详细答案120道之(021-040)
  • 字节跳动扣子 Coze 宣布开源:采用 Apache 2.0 许可证,支持商用
  • Qt 远程过程调用(RPC)实现方案
  • 网络基础19--OSPF路由业务多区域
  • 【Android】相对布局应用-登录界面
  • Java 中 System 类零度解析
  • 4N90-ASEMI电机控制专用4N90
  • 【数据结构】树的概念
  • 统计与大数据分析与数学金融课程解析
  • Avantage6.6下载与安装教程
  • 2025.7.26字节掀桌子了,把coze开源了!!!
  • 激光雷达-相机标定工具:支持普通相机和鱼眼相机的交互式标定
  • kafka的部署和jmeter连接kafka
  • 大语言模型 LLM 通过 Excel 知识库 增强日志分析,根因分析能力的技术方案(3):使用云平台最小外部依赖方案
  • 谷粒商城170缓存序列化报错
  • ​​XSLT:XML转换的“魔法棒”​
  • XML DOM