我目前正在努力让 ffmpeg 再次工作,它削弱了我使用不和谐或在 Firefox 中观看 mp4 的能力。
尝试在控制台中使用 ffmpeg 返回:
cla@CLAX1:~$ ffmpeg
ffmpeg: symbol lookup error: /lib/x86_64-linux-gnu/libva-x11.so.2: undefined symbol: va_fool_postp
和不和谐:
la@CLAX1:~$ discord
discord: error while loading shared libraries: libffmpeg.so: cannot open shared object file: No such file or directory
我已经搜索了很多天寻找可能的解决方案,但无济于事。通常建议安装 libva-x11-2:i386 但这也没有成功。有人建议扰乱系统链接,但这暂时使事情变得更糟。
我想提前感谢您的任何建议。
答案1
我也遇到过同样的问题ffmpeg
,这对我有用:
cd /lib/x86_64-linux-gnu/
ln -sf libva.so.2.1400.0 libva.so.2
这会更改符号链接libva.so.2
目标libva 2.14,这是该库的旧版本libva
。
以下是我如何找到此解决方案的描述,以防您的系统需要稍微不同的解决方案,并且您想知道如何找到有效的解决方案。
首先我们要知道这个错误是什么意思:
symbol lookup error: /lib/x86_64-linux-gnu/libva-x11.so.2: undefined symbol: va_fool_postp
这意味着库libva-x11.so.2
正在尝试引用名为 的符号(函数或变量)va_fool_postp
,但该符号未在库本身或其任何依赖项中定义。
检查libva Github 存储库搜索“va_fool_postp”发现它在2.15.0 版本va_fool
中被删除。libva
这可能意味着安装的libva-x11.so.2
库依赖于libva
2.15.0 之前的版本。
下一步是检查已安装的版本libva-x11.so.2
和libva2
软件包。就我而言,apt-cache policy <package>
在两个包上运行都会显示两个包的版本2.14.0-1
。这意味着va_fool
就是应该可以在图书馆使用libva2
,但不是。
检查库所在的目录,/lib/x86_64-linux-gnu/
显示计算机上安装的库。就我而言,该库有两个版本libva2
:libva.so.2.1400.0
、 和libva.so.2.2200.0
。到库 的链接libva.so.2
将其目标设置为库的较新版本libva.so.2.2200.0
。这可能是由另一个程序引起的,并在两个版本之间造成了冲突。可以通过执行已经提到的命令来恢复此更改:
ln -sf libva.so.2.1400.0 libva.so.2