应用程序尝试使用错误的共享库

应用程序尝试使用错误的共享库

我在 ubuntu 机器上运行程序 (quartus) 时遇到问题。我收到以下错误。

quartus: symbol lookup error: /usr/lib/i386-linux-gnu/libXi.so: undefined symbol: XESetWireToEventCookie

我有正确的libXi.so.6.0.0文件,但无论我把它放在哪里,除非我apt-get remove libxi-dev,否则操作系统都不会使用它,但很多软件都使用这个libXi。我想要做的是向动态链接器添加某种例外,以便quartus使用libXi所需的 .so ,而其他一切仍然使​​用 中的那个/usr/lib/i386-linux-gnu

谢谢!

答案1

您应该能够创建一个 shell 脚本包装器,详细信息如下在本文中,并利用这个LD_LIBRARY_PATH技巧,这样您就可以启动您的程序并确保它是唯一使用不同共享库的程序。不要将其放入您的 中.bashrc,因为您只希望它临时设置环境变量。使用此 shell 脚本包装器启动您的程序可能是处理与冲突的共享库有关的此类问题的最简单方法。

#!/bin/bash
export LD_LIBRARY_PATH="/path/to/lib/:$LD_LIBRARY_PATH"
/path/to/my/program

脚本的第二行设置库,最后一行启动程序。

如上所述这里,你可以先在终端中运行上面这export行,然后运行

ldd /path/to/my/program 

检查它是否正在加载正确的库。

相关内容