树莓派4运行dotnet提示"No such file or directory"错误求助
dotnet命令提示"No such file or directory"的解决思路 问题背景
我在树莓派4 Model B上尝试安装.NET SDK,每次执行dotnet --version这类命令时,都会收到No such file or directory错误。
我的树莓派运行的是Raspbian GNU/Linux 11 (bullseye) aarch64系统。
我尝试过以下安装方法:
- 脚本安装/手动解压二进制文件
- 针对单板计算机的安装流程
- 使用snap安装
- Debian系统默认安装流程
但所有方法都出现相同的错误。更困惑的是,安装后我确认.NET安装目录里的可执行文件存在,甚至直接在该目录执行./dotnet,结果还是一样。
执行file ./dotnet得到输出:
./dotnet: ELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.7.0, BuildID[sha1]=b85d57f5844b53d635bf3215726b064df0da9283, not stripped
从输出看程序是针对ARM aarch64编译的,排除了装错32位版本的可能,求解决思路。
解决思路
检查动态链接器是否存在
从file输出可知,程序依赖的解释器是/lib/ld-linux-aarch64.so.1,先检查该文件是否存在:ls -l /lib/ld-linux-aarch64.so.1如果不存在,说明系统缺少基础库包,执行以下命令重装
libc6:sudo apt update && sudo apt install --reinstall libc6若文件实际路径为
/lib/aarch64-linux-gnu/ld-linux-aarch64.so.1但缺少软链接,可手动创建:sudo ln -s /lib/aarch64-linux-gnu/ld-linux-aarch64.so.1 /lib/ld-linux-aarch64.so.1验证系统纯64位环境
虽然系统显示aarch64,但可能存在混合32位库的情况,执行命令确认:uname -m输出应为
aarch64;再检查已安装库的架构:dpkg --print-architecture输出应为
arm64。若存在armhf架构,需确保优先使用64位库,或清理冲突的32位依赖。检查.NET依赖的系统库完整性
使用ldd查看dotnet二进制文件的依赖情况:ldd ./dotnet若输出中有
not found的条目,说明缺少对应库,根据名称安装即可。比如常见缺失的libicu系列库,执行:sudo apt install libicu-dev清理残留安装文件后重新安装
多次尝试不同安装方法可能导致残留文件冲突,彻底清理后再重新安装:- 删除手动解压的.NET目录
- 卸载snap版本:
sudo snap remove dotnet-sdk - 移除Debian源安装的包:
sudo apt purge dotnet* aspnetcore* - 删除残留配置目录:
rm -rf ~/.dotnet /usr/share/dotnet
清理完成后,选择一种方法重新安装,推荐使用Debian官方源方式,确保步骤准确。
确认环境变量配置正确
安装完成后,确保dotnet路径被添加到PATH:echo 'export PATH="$PATH:/usr/share/dotnet"' >> ~/.bashrc source ~/.bashrc手动安装时,需将解压后的
dotnet目录路径加入PATH。
内容的提问来源于stack exchange,提问作者Farhat Samara

