• Linux桌面环境中应用程序无法启动图形交互界面


    现象:
    点击永中office或者金山office快捷图标无法启动对应的程序。
    从命令行执行对应的程序则提示

    按照提示安装组件

    再次执行命令行程序

    原因探析:
    /opt/Yozosoft/Yozo_Office/Yozo_Writer.bin: error while loading shared libraries: libgdk-x11-2.0.so.0: cannot open shared object file: No such file or directory

    从名称上看“libgdk-x11-2.0.so.0”是一个GTK+的图形用户接口共享库,如果没有这个library,程序的图形界面将不可启动。

    /opt/Yozosoft/Yozo_Office/Yozo_Writer.bin: symbol lookup error: /lib64/libharfbuzz.so.0: undefined symbol: FT_Get_Transform

    从提示信息看是差按照符号链接错误,FT_Get_Transform 代表了 C++ 中的Transform类函数,get_transforms()函数多用于进行矢量型图像转换。经查询,发现libharfbuzz.so.0是一个用于渲染字体的共享库。综合这两点可猜测,office套件图形界面此时启动失败,是因为OS用于渲染矢量字体的library和程序运行所需的版本不匹配。Linux中使用freetype共享库实现矢量字体显示,依次可查看freetype共享库信息。查看当前OS 中freetype共享库的信息:

    对比发现,OS中Java的freetype共享库版本为libfreetype.so、 而永中office中Java的freetype共享库版本为libfreetype.so.6。由于OS中的Java环境一定为全局变量,因此选择修改永中office中Java环境freetype共享库文件为libfreetype.so。

    推导性结论:
    大部分Linux桌面环境中的应用程序都基于QT或QT+开发或者基于jvm虚拟机运行,必定会依赖OS中的矢量图像渲染组件freetype共享库,因此除永中office、金山office外,kettel的桌面版也可能存在这个现象。

  • 相关阅读:
    知识蒸馏方法汇总
    数学建模学习(85):人工蜂群优化算法(ABCO)求解多元函数
    反向传播back propagation
    代码随想录 Day-45|#139 单词拆分
    基于 FFMPEG 的跨平台视频播放器简明教程(三):视频解码
    LED灯降压恒流驱动芯片5~60v输出1.5A大电流AP51656
    从零开始探索C语言(四)----循环
    指针的使用注意
    TensorRT安装
    基于SSM框架的校园疫情防控健康打卡系统
  • 原文地址:https://blog.csdn.net/UsamaBinLaden6976498/article/details/133248215