龍芯釋出 .NET 6 SDK 6.0.105-ea1 LoongArch64 版本

張善友發表於2022-06-17

龍芯平臺.NET,是龍芯公司基於開源社群.NET獨立研發適配的龍芯版本,我們會長期進行安全更新和錯誤修復,並持續進行效能優化。社群.NET7版本開始已經原生支援LoongArch64架構原始碼。具備如下特性:

  • 跟進社群最新版本,獲取及時的安全更新和問題修復
  • 支援多OS:Loongnix、統信UOS、中標麒麟等64位作業系統
  • 支援LoongArch架構
  • 明確的、多版本的產品維護計劃
  • 專業團隊支援

龍芯最近釋出的LoongArch64架構的.NET6.0-SDK是基於上游社群.NET6.0-LTS-SDK製作的,同樣是LTS版本,在生命週期維護範圍內,會持續進行更新升級。龍芯同時釋出了.NET 文件網站:http://docs.loongnix.cn/dotnet/

特性預覽:

  • runtime 支援預設原生分層編譯及優化特性;

  • 支援 libSystem.IO.Ports.Native.so 串列埠庫 (通過龍芯Nuget源下載);

  • 支援 libSkiaSharp.so、libHarfBuzzSharp.so 圖形庫 (通過龍芯Nuget源下載);

  • 支援 SQLite 本地資料庫 (通過龍芯Nuget源下載);

  • 支援 dotnet-sdk 各子模組單獨分包安裝,安裝方法請見.NET6安裝說明

龍芯Nuget源配置方法:

龍芯Nuget源上,可以找到一些包含 LoongArch64 架構平臺相關檔案的 nupkg 包。 你需要修改本地 ~/.nuget/NuGet/Nuget.config 配置檔案,新增龍芯 Nuget 源,以支援相關 nupkg 包的下載。或者手動在龍芯 Nuget 源下載,解壓到本地 ~/.nuget/packages/ 對應目錄下使用。

$ cat ~/.nuget/NuGet/NuGet.Config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="local" value="http://nuget.loongnix.cn:5000/v3/index.json" />
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
  </packageSources>
</configuration>

龍芯.NET 6安裝方法

當前支援 dotnet-sdk 各子模組單獨分包安裝,各子模組如下:

  • aspnetcore-runtime-6.0
  • aspnetcore-targeting-pack-6.0
  • dotnet-apphost-pack-6.0
  • dotnet-host-6.0
  • dotnet-hostfxr-6.0
  • dotnet-runtime-6.0
  • dotnet-runtime-deps-6.0
  • dotnet-sdk-6.0
  • dotnet-targeting-pack-6.0
  • netstandard-targeting-pack-2.1
使用包管理器離線安裝/解除安裝
  • 下載頁面 下載安裝包,請確認所使用的版本。
  • 安裝/解除安裝:(以 dotnet-sdk-6.0.105-ea1 loongarch64 示例)
deb
離線安裝命令,需要注意安裝包順序
$ sudo apt install ./dotnet-host-6.0.5-ea1-loongarch64.deb \
                ./dotnet-hostfxr-6.0.5-ea1-loongarch64.deb \
                ./dotnet-runtime-deps-6.0.5-ea1-loongarch64.deb \
                ./dotnet-runtime-6.0.5-ea1-loongarch64.deb \
                ./dotnet-targeting-pack-6.0.5-ea1-loongarch64.deb \
                ./aspnetcore-targeting-pack-6.0.5-ea1-loongarch64.deb \
                ./dotnet-apphost-pack-6.0.5-ea1-loongarch64.deb \
                ./aspnetcore-runtime-6.0.5-ea1-loongarch64.deb \
                ./netstandard-targeting-pack-2.1_2.1.0-1_ea1-loongarch64.deb \
                ./dotnet-sdk-6.0.105-ea1-loongarch64.deb

# 解除安裝:
$ sudo apt remove dotnet-runtime-deps-6.0 \
                dotnet-apphost-pack-6.0 \
                dotnet-host \
                dotnet-hostfxr-6.0 \
                dotnet-runtime-6.0 \
                dotnet-sdk-6.0 \
                dotnet-targeting-pack-6.0 \
                aspnetcore-runtime-6.0 \
                aspnetcore-targeting-pack-6.0 \
                netstandard-targeting-pack-2.1
rpm
# 離線安裝命令,需要注意安裝包順序 - Loongnix Server RPM
$ sudo yum install dotnet-host-6.0.5-ea1.loongarch64.rpm \
                dotnet-hostfxr-6.0-6.0.5-ea1.loongarch64.rpm \
                dotnet-runtime-deps-6.0-6.0.5-ea1.loongarch64.rpm \
                dotnet-runtime-6.0-6.0.5-ea1.loongarch64.rpm \
                dotnet-targeting-pack-6.0-6.0.5-ea1.loongarch64.rpm \
                aspnetcore-targeting-pack-6.0-6.0.5-ea1.loongarch64.rpm \
                dotnet-apphost-pack-6.0-6.0.5-ea1.loongarch64.rpm \
                aspnetcore-runtime-6.0-6.0.5-ea1.loongarch64.rpm \
                netstandard-targeting-pack-2.1-2.1.0-ea1.loongarch64.rpm \
                dotnet-sdk-6.0-6.0.105-ea1.loongarch64.rpm

# 離線安裝命令,需要注意安裝包順序 - 麒麟v10 RPM
$ sudo yum install dotnet-host-6.0.5-ea1.a.ky10.loongarch64.rpm \
                dotnet-hostfxr-6.0-6.0.5-ea1.a.ky10.loongarch64.rpm \
                dotnet-runtime-deps-6.0-6.0.5-ea1.a.ky10.loongarch64.rpm \
                dotnet-runtime-6.0-6.0.5-ea1.a.ky10.loongarch64.rpm \
                dotnet-targeting-pack-6.0-6.0.5-ea1.a.ky10.loongarch64.rpm \
                aspnetcore-targeting-pack-6.0-6.0.5-ea1.a.ky10.loongarch64.rpm \
                dotnet-apphost-pack-6.0-6.0.5-ea1.a.ky10.loongarch64.rpm \
                aspnetcore-runtime-6.0-6.0.5-ea1.a.ky10.loongarch64.rpm \
                netstandard-targeting-pack-2.1-2.1.0-ea1.a.ky10.loongarch64.rpm \
                dotnet-sdk-6.0-6.0.105-ea1.a.ky10.loongarch64.rpm

# 解除安裝:
$ sudo yum remove dotnet-runtime-deps-6.0 \
                dotnet-apphost-pack-6.0 \
                dotnet-host \
                dotnet-hostfxr-6.0 \
                dotnet-runtime-6.0 \
                dotnet-sdk-6.0 \
                dotnet-targeting-pack-6.0 \
                aspnetcore-runtime-6.0 \
                aspnetcore-targeting-pack-6.0 \
                netstandard-targeting-pack-2.1
使用包管理器線上安裝/解除安裝
deb
# 線上安裝
$ sudo apt install dotnet-sdk-6.0

# 解除安裝:
$ sudo apt remove dotnet-runtime-deps-6.0 \
                dotnet-apphost-pack-6.0 \
                dotnet-host \
                dotnet-hostfxr-6.0 \
                dotnet-runtime-6.0 \
                dotnet-sdk-6.0 \
                dotnet-targeting-pack-6.0 \
                aspnetcore-runtime-6.0 \
                aspnetcore-targeting-pack-6.0 \
                netstandard-targeting-pack-2.1
rpm
# 線上安裝
$ sudo yum install dotnet-sdk-6.0

# 解除安裝:
$ sudo yum remove dotnet-runtime-deps-6.0 \
                dotnet-apphost-pack-6.0 \
                dotnet-host \
                dotnet-hostfxr-6.0 \
                dotnet-runtime-6.0 \
                dotnet-sdk-6.0 \
                dotnet-targeting-pack-6.0 \
                aspnetcore-runtime-6.0 \
                aspnetcore-targeting-pack-6.0 \
                netstandard-targeting-pack-2.1
檢視安裝結果
$ whereis dotnet
dotnet: /usr/bin/dotnet /usr/share/dotnet /usr/share/man/man1/dotnet.1.gz
檢視 .NET 版本

更多關於 .NET 的使用方法及示例,請參考 .NET線上文件

### 檢視SDK版本:

可使用終端檢視當前安裝的 .NET Core SDK 版本。 開啟終端並執行以下命令。

dotnet --list-sdks

檢視執行時版本:

可使用以下命令檢視當前安裝的 .NET Core 執行時版本。

dotnet --list-runtimes

詳細資訊:

可通過以下命令檢視 SDK 版本和執行時版本。 你還將獲得其他環境相關資訊,如作業系統版本和執行時識別符號 (RID)。

dotnet --info

龍芯LoongArch64版.NET版本釋出說明

上游社群倉庫從 .NET7 已原生支援 LoongArch64 架構,龍芯釋出的 LoongArch64 架構 SDK ,分兩種版本型別:

  • 試用版: 其中安裝包名字中包含"ea"
    • 例如龍芯基於上游社群 SDK 6.0.105 版本釋出的 LoongArch64 ea 版本 deb 安裝包名為: dotnet-sdk-6.0.105-ea1-loongarch64.deb
  • 正式版: 穩定版本
    • 例如龍芯基於上游社群 SDK 6.0.105 版本釋出的 LoongArch64 正式版本 deb 安裝包名為: dotnet-sdk-6.0.105-1-loongarch64.deb
如何在LoongArch平臺支援SkiaSharp?

由於SkiaSharp中包含平臺相關程式碼,所以引用SkiaSharp的專案需要引用LoongArch版本的nupkg,同時一般還需要引用HarfBuzzSharp包。

支援的方法有如下兩種。

配置龍芯Nuget源,新增包引用

參考龍芯Nuget源配置頁面新增龍芯nuget源的配置。 在專案配置檔案中新增對SkiaSharp和HarfBuzzSharp的引用,參考命令如下:

cd project-src # 進入到專案原始碼目錄中
dotnet add package SkiaSharp.NativeAssets.Linux --version 2.80.3
dotnet add package HarfBuzzSharp.NativeAssets.Linux --version 2.6.1

執行上述命令後,注意檢視shell是否有從nuget.loongnix.cn下載nupkg包的輸出,如下:

info : Adding PackageReference for package 'SkiaSharp.NativeAssets.Linux' into project '/data2/loongson/example/example.csproj'.
info : Restoring packages for /data2/loongson/example/example.csproj...
info :   GET http://nuget.loongnix.cn:5000/v3/package/skiasharp.nativeassets.linux/index.json
info :   OK http://nuget.loongnix.cn:5000/v3/package/skiasharp.nativeassets.linux/index.json 48ms
info :   GET http://nuget.loongnix.cn:5000/v3/package/skiasharp.nativeassets.linux/2.80.3/skiasharp.nativeassets.linux.2.80.3.nupkg
info :   OK http://nuget.loongnix.cn:5000/v3/package/skiasharp.nativeassets.linux/2.80.3/skiasharp.nativeassets.linux.2.80.3.nupkg 54ms
...
info : Adding PackageReference for package 'HarfBuzzSharp.NativeAssets.Linux' into project '/data2/loongson/example/example.csproj'.
info : Restoring packages for /data2/loongson/example/example.csproj...
info :   GET http://nuget.loongnix.cn:5000/v3/package/harfbuzzsharp.nativeassets.linux/index.json
info :   OK http://nuget.loongnix.cn:5000/v3/package/harfbuzzsharp.nativeassets.linux/index.json 405ms
info :   GET https://api.nuget.org/v3-flatcontainer/harfbuzzsharp.nativeassets.linux/index.json
info :   GET http://nuget.loongnix.cn:5000/v3/package/harfbuzzsharp.nativeassets.linux/2.6.1/harfbuzzsharp.nativeassets.linux.2.6.1.nupkg
info :   OK http://nuget.loongnix.cn:5000/v3/package/harfbuzzsharp.nativeassets.linux/2.6.1/harfbuzzsharp.nativeassets.linux.2.6.1.nupkg 57ms

通過上述步驟即可完成。

手動下載,並複製到SDK目錄

如果需要執行從其它平臺(如x64)編譯好的專案,則建議到龍芯Nuget源手動下載SkiaSharp和HarfBuzzSharp nupkg包,解壓後將so檔案複製到SDK目錄下。

# 下載nupkg包
wget http://nuget.loongnix.cn:5000/v3/package/skiasharp.nativeassets.linux/2.80.3/skiasharp.nativeassets.linux.2.80.3.nupkg
wget http://nuget.loongnix.cn:5000/v3/package/harfbuzzsharp.nativeassets.linux/2.6.1/harfbuzzsharp.nativeassets.linux.2.6.1.nupkg

# 解壓
mkdir skiasharp harfbuzzsharp
unzip skiasharp.nativeassets.linux.2.80.3.nupkg -d skiasharp
unzip harfbuzzsharp.nativeassets.linux.2.6.1.nupkg -d harfbuzzsharp

# 以.NET 6.0.5預設路徑為例:
# 複製libSkiaSharp.so和libHarfBuzzSharp.so到SDK目錄下dotnet/shared/Microsoft.NETCore.App/6.0.5
sudo cp ./skiasharp/runtimes/linux-loongarch64/native/libSkiaSharp.so /usr/share/dotnet/shared/Microsoft.NETCore.App/6.0.5
sudo cp ./harfbuzzsharp/runtimes/linux-loongarch64/native/libHarfBuzzSharp.so /usr/share/dotnet/shared/Microsoft.NETCore.App/6.0.5

相關文章