xgterm 无法找到已安装的库

xgterm 无法找到已安装的库

我正在一台新机器上安装IRAF,当我尝试启动时xgterm,收到错误消息:

xgterm: error while loading shared libraries: libXmu.so.6: cannot open shared object file: No such file or directory

但是,包含此库的软件包libXmu6已经安装并且是最新的。

任何帮助,将不胜感激。

答案1

您可以尝试以下两件事:(i)安装-dev库的包 - 例如sudo apt-get install libxmu-dev或(ii)如果您在 64 位机器上使用 32 位 IRAF 安装,请安装 32 位库,例如sudo apt-get install libxmu6:i386

答案2

如果安装开发包不起作用,您可能必须将其导出到 LD_LIBRARY_PATH 变量。

你可以通过以下方式找到它find / -iname libXmu.so.6 -print 2>/dev/null,在我的例子中它位于/usr/lib/x86_64-linux-gnu/libXmu.so.6

export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/libXmu.so.6/lib:${LD_LIBRARY_PATH}

注意:如果$LD_LIBRARY_PATH变量一开始是空的,那么你应该省略lib...后续内容。

这并没有改变我的情况,这个建议我运行了sudo apt-get install ia32-libs一下,效果不错,现在将错误消息更改为

error while loading shared libraries: libXm.so.4: cannot open shared object file: No such file or directory

(即数字 4 而不是 6)

可以使用 进行安装sudo apt-get install libxm4,使用 找到结果位置find / -iname libXm.so.4 -print 2>/dev/null,并将$LD_LIBRARY_PATH其添加到 中(例如,对于我的结果)

export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/libXm.so.4/lib:${LD_LIBRARY_PATH}

意思是我LD_LIBRARY_PATH/usr/lib/x86_64-linux-gnu/libXm.so.4/lib:/usr/lib/x86_64-linux-gnu/libXmu.so.6

但这并没有改变要求 libXm.so.4 的错误消息。对于这个库(我可以通过定位看到它在那里...),我安装了 OpenMotif(不确定这是否有必要)

sudo apt-get install libmotif-dev

最后发现 32 位软件包要求在安装后可以与 libXmu.so.6 库一起使用ia32-libs,但 libXm.so.4 需要使用 /usr/lib/i386-linx-gnu 文件夹中的链接明确声明 32 位状态。当我运行以下命令时,这一点很明显:

/usr/lib/i386-linux-gnu $ ls ../*/libXm*

(仅显示../i386-linux-gnu/libXmu.so.6),因此我创建了一个这样的链接:

sudo ln -s /usr/lib/x86_64-linux-gnu/libXm.so.4.0.4 /usr/lib/i386-linux-gnu/libXm.so.4

然后我设法前进到下一个错误消息(哇哦!)正如提到的其他帮助页面

error while loading shared libraries: libXm.so.4: wrong ELF class: ELFCLASS64

...这很奇怪,因为我刚刚把链接放在那里……这一页建议了一种解决方法,但我无法安装 libx3motif.deb,因为它amd64破坏了依赖关系(而且我不会为了这个而卸载这样的关键组件)。

这个答案强调需要先使用 32 位软件包,然后$LD_LIBRARY_PATH再使用 64 位软件包。

export LD_LIBRARY_PATH=/usr/lib/i386-linux-gnu/libXm.so.4/lib:/usr/lib/x86_64-linux-gnu/libXmu.so.6.2.0/lib:/usr/lib/x86_64-linux-gnu/libXmu.so.6

这并没有改变什么。我尝试将文件复制到文件i386夹并重定向链接

sudo cp /usr/lib/x86_64-linux-gnu/libXm.so.4.0.4 /usr/lib/i386-linux-gnu/libXm.so.4.0.4
sudo ln -fs /usr/lib/i386-linux-gnu/libXm.so.4.0.4 /usr/lib/i386-linux-gnu/libXm.so.4

(该-f标志强制重新定位,即您不必rm重新制作)

我为此挣扎了一段时间 (不太确定最后一根稻草是什么),直到在我的 .bashrc 中找到成功的方法:

export LD_LIBRARY_PATH=/usr/lib/i386-linux-gnu/libXm.so.4/lib:/usr/lib/x86_64-linux-gnu/libXmu.so.6.2.0/lib:/usr/lib/x86_64-linux-gnu/libXmu.so.6

所以这证明你需要安装 32 位软件包,只需将 32 位 lib 文件夹中的符号链接指向 64 位软件包...抱歉信息太多,但对于未来遇到困难的人来说可能很有用

相关内容