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后如下所示,则直接跳转至编写测试程序。
如果显示dotnet缺少ICU依赖,则还需要安装libicu
配置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
修改图示补丁信息
1 2 3 4 5 6 7 8 9 @@ -39,7 +39,7 @@ LD_SOOPTIONS= -Wl,-Bsymbolic # SO = so # -STATIC_O = ao +STATIC_O = o # % .$(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程序
创建一个新的 .NET 控制台应用程序 : 使用以下命令创建一个新的 .NET 控制台应用程序:
1 2 dotnet new console -n HelloWorld cd HelloWorld
这将创建一个名为 HelloWorld 的新目录,其中包含一个简单的 .NET 项目。
修改 **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文件:
构建应用程序 : 在项目目录中,使用以下命令构建应用程序:
运行应用程序 : 构建成功后,使用以下命令运行应用程序:
成功之后,你会在控制台上看到输出 “Hello, World!”。
2.2. 使用命令行验证 .NET 程序 如果你想通过命令行直接运行一个简单的 .NET 程序,你可以使用 dotnet 命令来执行程序集。例如:
创建一个简单的 .NET 程序 : 使用 dotnet 命令行工具直接在命令行中创建一个新的控制台应用程序:
1 2 dotnet new console -o MyConsoleApp cd MyConsoleApp
修改 **Program.cs** 文件 : 编辑 Program.cs 文件,修改 Main 方法。
构建并运行程序 : 你可以组合 dotnet build 和 dotnet run 命令,直接构建并运行程序: