通常造成这个问题的原因是银河麒麟的操作系统默认没有安装glibc,安装一下即可。
在页面中搜索glibc并下载rpm包: Index of /NS/V10/V10SP1/os/adv/lic/base/x86_64/Packages/ (cs2c.com.cn) 注意我这里服务器是x86架构的,如果是arm架构的需要找arm版本的文件下载。
一般来说只需要:glibc-2.28-36.1.ky10.x86_64.rpm 、glibc-common-2.28-36.1.ky10.x86_64.rpm 、glibc-devel-2.28-36.1.ky10.x86_64.rpm 这三个就行,如果不行就都下载吧。
将文件上传服务器,安装rpm包:
rpm -ivh glibc-common-2.28-36.1.ky10.x86_64.rpm –nodeps –force
rpm -ivh glibc-devel-2.28-36.1.ky10.x86_64.rpm –nodeps –force
rpm -ivh glibc-2.28-36.1.x86_64.rpm –nodeps –force
查看版本:
ldd –version
没问题后,重启服务器。
但是注意!
有的时候服务器上已经安装有glibc,也还是会出这个问题。这个时候,就得考虑服务器有可能还缺了libgdiplus。保险的方式是下载libgdiplus源码,上传至服务器编译安装。
不过实测编译安装libgdiplus的前提是,需要先编译安装jpegsrc,否则在银河麒麟系统上大概率会编译通不过。具体过程如下:
下载两个文件:
https://download.mono-project.com/sources/libgdiplus/libgdiplus-6.0.4.tar.gz
http://www.ijg.org/files/jpegsrc.v9f.tar.gz
上传到到服务器,
编译安装jpegsrc:
tar -xzf jpegsrc.v9f.tar.gz
cd jpeg-9f
./configure –prefix=/usr
make
make install
编译安装libgdiplus:
tar libgdiplus-6.0.4.tar.gz
cd libgdiplus-6.0.4
./configure –prefix=/usr
make
make install
make过程可能会有警告提示,不用管。
完成之后记得重启服务器,应该就OK了。
另外,如果还有类似 SkiaSharp.SKAbstractManagedStream、SkiaSharp.SKObject 等等这类库提示“The type initializer”错误的,基本上是项目编译的时候缺少SkiaSharp.NativeAssets.Linux.NoDependencies依赖,加上再重新编译发布部署即可。