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

2022-10-18  本文已影响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
上一篇下一篇

猜你喜欢

热点阅读