我正在一台新机器上安装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 位软件包...抱歉信息太多,但对于未来遇到困难的人来说可能很有用