美文网首页
应用启动时通过LD_LIBRARY_PATH修改依赖的动态库

应用启动时通过LD_LIBRARY_PATH修改依赖的动态库

作者: 苍蝇的梦 | 来源:发表于2022-10-18 19:12 被阅读0次

    2022-10-11 遇到的一点小问题

    最近在ArchLinux上运行某个程序,遇到了错误提示。

    [root@wannoo bin]# wannoo
    wannoo: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.26' not found (required by wannoo)
    

    之前遇到这种,都是直接执行pacman -S gcc-libs,更新gcc-libs。但这次担心影响其他应用,所以不能升级。
    周围问了下,同事给了个LD_LIBRARY_PATH链接,让试试。
    命令export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/mnt/wannoo/lib是修改的全局的环境,不合适。
    改了下命令,可以了,而且只针对这次命令。

    [root@wannoo bin]# LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/mnt/wannoo/lib wannoo
    正常运行
    

    不过这个程序是使用的systemctl start wannoo来启动的。wannoo.service文件的ExecStart=没办法直接设置环境变量,原本是打算通过/bin/sh xxx.sh来启动,但后面觉得这样不太好看。
    所以又翻了下Systemdsystemd.exec,发现可以通过设置EnvironmentFile=-/mnt/wannoo.conf来配置程序的环境变量。

    文件:wannoo.service

    [Unit]
    Description=Network Audio Adapter daemon
    Requires=network-online.target sound.target systemd-udev-settle.service
    After=network-online.target sound.target systemd-udev-settle.service
    
    [Service]
    Type=simple
    ExecStart=/mnt/test/bin/wannoo
    Restart=always
    RestartSec=1
    EnvironmentFile=-/mnt/test/wannoo.conf
    Nice=-10
    IOSchedulingClass=realtime
    LimitMEMLOCK=1G
    LimitNICE=-10
    LimitRTPRIO=98
    
    [Install]
    WantedBy=multi-user.target
    

    文件:/mnt/test/wannoo.conf

    LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/mnt/wannoo/lib
    

    相关文章

      网友评论

          本文标题:应用启动时通过LD_LIBRARY_PATH修改依赖的动态库

          本文链接:https://www.haomeiwen.com/subject/rljzartx.html