我在 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
检查它是否正在加载正确的库。