1. 查看 Zynq Linux 版本
通过 Tera Term 软件,远程登录到 Zynq 系统上,运行命令:
uname -a
显示如下(系统是 armv7l):
2. 编译适用于 arm 版本的 Grpc 服务可执行程序
Grpc 服务代码目录下,执行命令:
dotnet publish -r linux-arm
// 解决方案下存在多个项目时,使用命令:
dotnet publish 项目名.csproj -r linux-arm
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 服务,成功。如下图所示: