1. 在Buildroot系统下配置安装.net

1.1. 从官网下载对应的运行时环境压缩包

下载地址: https://download.visualstudio.microsoft.com/download/pr/ec8e29f5-2fbe-47d8-b0c5-81f11434c00f/ba4bd30be448d649e5ddf1991bf76252/dotnet-sdk-6.0.425-linux-arm64.tar.gz

1.2. 将压缩包解压进SDK

1
2
3
4
5
6
7
8
// 从官网下载.net压缩包 
$ wget https://download.visualstudio.microsoft.com/download/pr/ec8e29f5-2fbe-47d8-b0c5-81f11434c00f/ba4bd30be448d649e5ddf1991bf76252/dotnet-sdk-6.0.425-linux-arm64.tar.gz

// 将压缩包解压进sdk中buildroot系统的fs-overlay目录下
$ mkdir -p <SDK路径>/buildroot/board/rockchip/rk3562/fs-overlay/root/dotnet && tar zxf dotnet-sdk-6.0.425-linux-arm64.tar.gz -C <SDK路径>/buildroot/board/rockchip/rk3562/fs-overlay/root/dotnet

// 若fs-overlay目录下不存在root目录,则需新建一个root目录
$ mkdir <SDK路径>/buildroot/board/rockchip/rk3562/fs-overlay/root

1.3. 配置buildroot环境变量

1
2
3
4
5
// 进入sdk中的fs-overlay目录
$ cd <SDK路径>/buildroot/board/rockchip/rk3562/fs-overlay

// 在fs-overlay的etc目录下创建profile文件
$ mkdir ./etc/profile

在profile文件中加入如下配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
export PATH="/usr/bin:/usr/sbin"

if [ "$PS1" ]; then
if [ "$BASH" ]; then
# The file bash.bashrc already sets the default PS1.
# PS1='\h:\w\$ '
if [ -f /etc/bash.bashrc ]; then
. /etc/bash.bashrc
fi
else
if [ "`id -u`" -eq 0 ]; then
PS1='# '
else
PS1='$ '
fi
fi
fi

export EDITOR='/bin/vi'

# Source configuration files from /etc/profile.d
for i in /etc/profile.d/*.sh ; do
if [ -r "$i" ]; then
. $i
fi
done
unset i

export PATH="$PATH:/root/dotnet"

保存退出。

1.4. 编译buildroot

回到sdk目录下,编译rootfs

1
2
3
4
// 进入sdk目录
$ cd rk3562_linux
// 编译rootfs
$ ./build.sh rootfs

编译生成rootfs.ext2文件,在<SDK目录>/buildroot/output/rockchip_rk3562/images/rootfs.ext2路径下

通过开发工具将rootfs.ext2文件烧录进开发板的对应地址即可

将rootfs烧写进开发板后,先验证dotnet功能是否正常,若在命令行输入dotnet --version后如下所示,则直接跳转至编写测试程序。

img

如果显示dotnet缺少ICU依赖,则还需要安装libicu

img

配置ICU

1
2
3
4
// 进入sdk目录
$ cd rk3562_linux
// 加入ICU配置信息
$ echo "BR2_PACKAGE_ICU=y" > ./buildroot/configs/rockchip_rk3562_defconfig

修改ICU补丁

1
2
// 通过文本编辑器编辑icu 0001号补丁
$ ./buildroot/package/icu/0001-dont-build-static-dynamic-twice.patch

修改图示补丁信息

img

1
2
3
4
5
6
7
8
9
@@ -39,7 +39,7 @@ LD_SOOPTIONS= -Wl,-Bsymbolic
## Shared object suffix
SO = so
## Non-shared intermediate object suffix
-STATIC_O = ao
+STATIC_O = o

## Compilation rules
%.$(STATIC_O): $(srcdir)/%.c

重新编译

1
2
3
4
5
6
// 进入sdk目录
$ cd rk3562_linux
// 删除buildroot目录下icu相关文件目录
$ rm -rf ./buildrooot/output/rockchip_rk3562/build/icu-70-1/
// 重新编译rootfs
$ ./build.sh rootfs

2. 测试.net

2.1. 创建并运行一个简单的.NET程序

  1. 创建一个新的 .NET 控制台应用程序: 使用以下命令创建一个新的 .NET 控制台应用程序:
1
2
dotnet new console -n HelloWorld
cd HelloWorld

这将创建一个名为 HelloWorld 的新目录,其中包含一个简单的 .NET 项目。

  1. 修改 **Program.cs** 文件: 使用文本编辑器打开 Program.cs 文件,并修改 Main 方法以打印 “Hello, World!” 到控制台:
1
2
3
4
5
6
7
8
9
10
11
12
using System;

namespace HelloWorld
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello, World!");
}
}
}

通过vim编辑器编辑Program.cs文件:

1
vi ./Program.cs

img

  1. 构建应用程序: 在项目目录中,使用以下命令构建应用程序:
1
dotnet build
  1. 运行应用程序: 构建成功后,使用以下命令运行应用程序:
1
dotnet run

成功之后,你会在控制台上看到输出 “Hello, World!”。

img

2.2. 使用命令行验证 .NET 程序

如果你想通过命令行直接运行一个简单的 .NET 程序,你可以使用 dotnet 命令来执行程序集。例如:

  1. 创建一个简单的 .NET 程序: 使用 dotnet 命令行工具直接在命令行中创建一个新的控制台应用程序:
1
2
dotnet new console -o MyConsoleApp
cd MyConsoleApp
  1. 修改 **Program.cs** 文件: 编辑 Program.cs 文件,修改 Main 方法。
  2. 构建并运行程序: 你可以组合 dotnet builddotnet run 命令,直接构建并运行程序:
1
dotnet run