部署 C# Grpc 服务到 Zynq 板卡

1. 查看 Zynq Linux 版本

通过 Tera Term 软件,远程登录到 Zynq 系统上,运行命令:

uname -a

显示如下(系统是 armv7l):

2. 编译适用于 arm 版本的 Grpc 服务可执行程序

Grpc 服务代码目录下,执行命令:

dotnet publish -r linux-arm

// 解决方案下存在多个项目时,使用命令:
dotnet publish 项目名.csproj -r linux-arm

参考:发布独立应用  Linux RID

3. 在 Zynq 上运行 Grpc 服务

运行出现错误:

./GrpcGreeter: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory

 解决方案:

在 Xilinx SDK 安装目录下搜索 libstdc++.so.6,将 aarch32(armv7l 是 32位系统) 目录下的如下图所示的两个文件拷贝到 Zynq 的 /lib 目录下

 

 重新运行 Grpc 服务,出现错误:

./GrpcGreeter: error while loading shared libraries: libgcc_s.so.1: cannot open shared object file: No such file or directory

 解决方案:同上,将如下图所示目录下的 libgcc_s.so.1 拷贝到 Zynq 的 /lib 目录下

 重新运行 Grpc 服务,出现错误:

Process terminated. Couldn't find a valid ICU package installed on the system. Set the configuration flag System.Globalization.Invariant to true if you want to run with no globalization support.

 解决方案:修改 Grpc 服务源码项目的 .csproj 文件,添加:

<ItemGroup>
    <RuntimeHostConfigurationOption Include="System.Globalization.Invariant" Value="true"/>
</ItemGroup>

如下图所示:

参考:NET 的全球化模式 NET Core Globalization Invariant Mode

重新运行 Grpc 服务,成功。如下图所示:

  

原文地址:https://www.cnblogs.com/dhqy/p/14335923.html