动态库找不到解决方法

今天通过命令启动jenkins的情况下: 命令启动jenkins: JENKINS_HOME=/var/lib/jenkins  /data/midsoft/jdk1.8.0_333/bin/java  -Xms1024m -Xmx1024m -Xmn256m -Xss512k -server -XX:+HeapDum...

今天通过命令启动jenkins的情况下:

命令启动jenkins:

JENKINS_HOME=/var/lib/jenkins  /data/midsoft/jdk1.8.0_333/bin/java  -Xms1024m -Xmx1024m -Xmn256m -Xss512k -server -XX:+HeapDumpOnOutOfMemoryError -Dhudson.util.ProcessTree.disable=true -Djava.awt.headless=true -Dfile.encoding=utf-8 -jar /var/lib/jenkins/jenkins.war --httpPort=8686

报错如下:/data/midsoft/jdk1.8.0_333/bin/java: symbol lookup error: /lib/x86_64-linux-gnu/libfontconfig.so.1: undefined symbol: FT_Done_MM_Var

通过报错我以为是字体库有问题,使用 fc-cache -f  -v   重建字体库的时候也报如下错误:

symbol lookup error: /lib/x86_64-linux-gnu/libfontconfig.so.1: undefined symbol: FT_Done_MM_Var

通过查资料发现:

FT_Done_MM_Var 是 FreeType 2.9+ 引入的 API 符号。错误表明:

  1. 您的 libfontconfig.so.1 是在支持新 API 的 FreeType 版本上编译的

  2. 但运行时加载的 FreeType 库(libfreetype.so.6)是不完整或损坏的版本,缺少该符号


    为了确认问题,需要插查询 /lib/x86_64-linux-gnu/libfontconfig.so.1 库使用的 freetype 库的版本


    dd /lib/x86_64-linux-gnu/libfontconfig.so.1 | grep freetype

    ```

    输出如下:

    ```

    libfreetype.so.6 => /lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007f8e3a1b0000)

    ```

    使用       strings /lib/x86_64-linux-gnu/libfreetype.so.6 | grep -i "freeType"

    发现freetype的路径为: /data/shitian/soft/freetype-2.8.1/include/freetype

    明显这个版本是没有FT_Done_MM_Var 这个”符号“的


    同理       ldd /usr/bin/fc-cache |grep "freetype"

    输出free type 库文件路径为:libfreetype.so.6 => /usr/local/lib/libfreetype.so.6 (0x00007fafb3f3d000)


    同理  strings /usr/local/lib/libfreetype.so.6|grep -i "freetype" 也是freetype 版本不对,

    明明 


    /lib/x86_64-linux-gnu

    /usr/lib/x86_64-linux-gnu

    路径下的都是最新的freetype库,不管是fc-cache 命令或是 jenkins 依赖都不使用呢, 通过查看

    vim /etc/ld.so.conf.d/x86_64-linux-gnu.conf  下的系统动态库加载路径发现里面路径配置如下:

    /usr/local/lib/x86_64-linux-gnu

    /lib/x86_64-linux-gnu

    /usr/lib/x86_64-linux-gnu

    明显优先加载库文件路径为:/usr/local/lib/x86_64-linux-gnu      我修改了顺序,使用ldconfig 加载也没有生效,不知道是不是要重启系统才生效,

    既然知道了问题所在,那我可以临时解决方法是:

    export LD_LIBRARY_PATH=/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu

    然后ldd fc-cache 的freetype路径已经变成了 /lib/x86_64-linux/gnu 下的freetype库了。

    如果实在不行启动系统或,临时加载环境来启动jenkins,可以使用如下命令启动:


    LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu  JENKINS_HOME=/var/lib/jenkins  /data/midsoft/jdk1.8.0_333/bin/java  -Xms1024m -Xmx1024m -Xmn256m -Xss512k -server -XX:+HeapDumpOnOutOfMemoryError -Dhudson.util.ProcessTree.disable=true -Djava.awt.headless=true -Dfile.encoding=utf-8 -jar /var/lib/jenkins/jenkins.war --httpPort=8686


  • 发表于 2025-06-06 22:43
  • 阅读 ( 47 )

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
每天惠23
每天惠23

33 篇文章

作家榜 »

  1. shitian 662 文章
  2. 石天 437 文章
  3. 每天惠23 33 文章
  4. 小A 29 文章