银河麒麟V10版本解决“The type initializer for 'Gdip' threw an exception”错误

 通常造成这个问题的原因是银河麒麟的操作系统默认没有安装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.rpmglibc-common-2.28-36.1.ky10.x86_64.rpmglibc-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依赖,加上再重新编译发布部署即可。

 

posted @ 2024-06-26 10:04  寒冰之光  阅读(33)  评论(0编辑  收藏  举报