刚刚好 dotnet 8 的 glibc 版本足够旧,可以运行

本文记录于 2024.04.26 如果你阅读本文时间距离本文记录时间过远,可能本文记录的信息已失效

dotnet

根据 dotnet 的 supported-os 文档记录,当前的 dotnet 8 是 8.0.4 版本,官方说明是支持 Debian 11 及以上版本

实际测试可以在 debian 10 运行,且构建打包制作 AOT 等也正常

构建 dotnet 8 使用的是 Ubuntu 16.04 系统,依赖的 glibc 是 2.23 版本

debian 10

debian 10.13 版本的 glibc 版本是 2.28 版本

通过 ldd --version 命令行获取的 glibc 版本信息如下

ldd (Debian GLIBC 2.28-10+deb10u2) 2.28

可见 debian 10.13 的 glibc 版本大于 dotnet 8 的依赖 glibc 版本,从基础层面上提供了可运行的可能

经过我的稍微复杂的测试,发现了 dotnet 8 可以运行起来,且 AOT 部分也正常

麒麟

在我的设备上使用 cat /etc/.kyinfo 获取麒麟系统的版本的输出信息如下

[dist]
name=Kylin
milestone=Desktop-V10-SP1-General-Release-TSM-lindexi-20230217
arch=arm64
beta=False
time=2023-02-17 19:01:29

根据 定昌电子 记录的文档,这里的 Desktop V10 SP1 General Release 版本就是银河麒麟桌面操作系统V10 SP1版本

运行 uname -r 的输出如下

>$ uname -r
5.4.18-53sy01-generic

在麒麟系统上运行 cat /etc/debian_version 获取 debian 版本号,输出信息如下

>$ cat /etc/debian_version
bullseye/sid

bullseye 是 debian 11 的发布代号,详细请看 https://www.debian.org/releases/bullseye/

运行 ldd --version 命令行获取的 glibc 版本信息如下

>$ ldd --version
ldd (Ubuntu GLIBC 2.31-0kylin9.1k20.5) 2.31

可以看到麒麟V10基于 debian 11 且 glibc 为 2.31 版本,完全在 dotnet 8 支持范围内

UOS

在我的 UOS 虚拟机上运行 cat /etc/product-info 获取 UOS 的版本号信息的输出如下

>$ cat /etc/product-info
UnionTech OS-20-20221214083720_x86_64_E_1050_4-19

运行 cat /etc/os-version 查看 UOS 统信操作系统版本的输出如下

>$ cat /etc/os-version
[Version]
SystemName=UnionTech OS Desktop
SystemName[zh_CN]=统信桌面操作系统
ProductType=Desktop
ProductType[zh_CN]=桌面
EditionName=E
EditionName[zh_CN]=E
MajorVersion=20
MinorVersion=1050
OsBuild=11068.102

运行 cat /etc/os-release 的输出如下

>$ cat /etc/os-release
PRETTY_NAME="UnionTech OS Desktop 20 E"
NAME="uos"
VERSION_ID="20"
VERSION="20"
ID=uos
HOME_URL="https://www.chinauos.com/"
BUG_REPORT_URL="http://bbs.chinauos.com"
VERSION_CODENAME=uranus

运行 uname -r 的输出如下

>$ uname -r
4.19.0-amd64-desktop

运行 cat /etc/debian_version 获取 debian 版本号,输出信息如下

>$ cat /etc/debian_version
10.10

运行 ldd --version 命令行获取的 glibc 版本信息如下

>$ ldd --version
ldd (Debian GLIBC 2.28.19-1+dde) 2.28

可以看到 UOS 的 OS-20-20221214083720 20.1050.11068.102 版本是基于 debian 10 的,在 dotnet 8 官方声明的支持范围之外。但 glibc 的版本是 2.28 版本,大于 dotnet 8 的依赖版本,提供了基础运行的可能。经过我的稍微复杂的测试,发现了 dotnet 8 可以运行起来,且 AOT 部分也正常

更多 Linux 和国产系统的开发相关博客,请参阅 博客导航


本文会经常更新,请阅读原文: https://blog.lindexi.com/post/dotnet-8-%E7%89%88%E6%9C%AC%E4%B8%8E%E9%93%B6%E6%B2%B3%E9%BA%92%E9%BA%9FV10%E5%92%8CUOS%E7%B3%BB%E7%BB%9F%E7%9A%84-glibc-%E5%85%BC%E5%AE%B9%E6%80%A7.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

如果你想持续阅读我的最新博客,请点击 RSS 订阅,推荐使用RSS Stalker订阅博客,或者收藏我的博客导航

知识共享许可协议 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接: https://blog.lindexi.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系

微软最具价值专家


无盈利,不卖课,做纯粹的技术博客

以下是广告时间

推荐关注 Edi.Wang 的公众号

欢迎进入 Eleven 老师组建的 .NET 社区

以上广告全是友情推广,无盈利