• .NET如何运行在Arm64位的系统上
  • 发布于 2个月前
  • 749 热度
    0 评论
前言
.Net是可以运行在Arm上面的,但是有一定的限制。比如dotnet sdk在MacOS系统上不能运行Arm的32位程序。本篇来看下最新的.Net8 Preview2运行在Linux-Arm64位的系统上。

概括
运行如下命令
下载arm64的root系统和.Net8的arm64 SDK。解压,然后放到root tmp文件夹下面安装。
#wget https://cloud-images.ubuntu.com/releases/22.04/release/ubuntu-22.04-server-cloudimg-arm64-root.tar.xz
#wget https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/sdk-8.0.100-preview.2-linux-arm64-binaries
#mkdir root
#tar -xvf ubuntu-22.04-server-cloudimg-arm64-root.tar.xz -C root/
#cp -r dotnet-sdk-8.0.100-preview.2.23157.25-linux-arm64.tar.gz root/tmp
#cd root/tmp
#mkdir dotnet
#tar -xvf dotnet-sdk-8.0.100-preview.2.23157.25-linux-arm64.tar.gz -C dotnet
#cd ..
#cd ..
#chroot root
看下当前系统版本:
#uname -a
Linux tang-virtual-machine 5.19.0-38-generic #39~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Fri Mar 17 21:16:15 UTC 2 aarch64 aarch64 aarch64 GNU/Linux
进入到tmp目录下看下.Net8的信息
#tmp/dotnet/dotnet --info
Failed to create CoreCLR, HRESULT: 0x8007000E
Host:
  Version:      8.0.0-preview.2.23128.3
  Architecture: arm64
  Commit:       30b879924a
.NET SDKs installed:
  8.0.100-preview.2.23157.25 [/tmp/dotnet/sdk]
.NET runtimes installed:
  Microsoft.AspNetCore.App 8.0.0-preview.2.23153.2 [/tmp/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 8.0.0-preview.2.23128.3 [/tmp/dotnet/shared/Microsoft.NETCore.App]
Other architectures found:
  None
Environment variables:
  Not set
global.json file:
  Not found
Learn more:
  https://aka.ms/dotnet/info
Download .NET:
  https://aka.ms/dotnet/download
可以看到它这个还是有一定的问题,比如无法创建CoreCLR,以及找不到全局json file等。如果是.Net7的话,会提示找不到路径。这里是模拟运行,实体机不知道怎么样。

结尾
以上是在X64的Linux发行版下运行的Arm64位OS,然后让.Net8运行在Arm64上。还有一个Host主机,也就是Windows11。
大致是:
windows->VM->Ubuntu->Arm64->.Net8

用户评论