java Matlab安装(LD_LIBRARY_PATH)会弄乱其他库文件
我试图在Linux机器上安装Matlab,但是设置LD_LIBRARY_PATH(根据安装要求)会破坏其他库文件。我不是Linux专家,但我已经尝试了几种方法,但无法使其正常工作。我甚至联系了Matlab的支持人员,将这个问题提交给开发团队,他们基本上告诉我“哈哈,糟透了”。我在网上看到其他一些人也有同样的问题,但要么他们的问题没有得到回答,要么他们有一个稍微不同的问题,他们的解决方案不适用于我
在运行Ubuntu的VM上安装:
我按照说明设置了LD_LIBRARY_路径,然后它会破坏网络文件。我可以用谷歌搜索。com,但我不能搜索谷歌。com或在浏览器中访问它。Nslookup提供了以下错误:
nslookup: /usr/local/MATLAB/MATLAB_Runtime/v90/bin/glnxa64/libcrypto.so.1.0.0: no version information available (required by /usr/lib/libdns.so.100)
03-Feb-2016 11:32:22.361 ENGINE_by_id failed (crypto failure)
03-Feb-2016 11:32:22.362 error:25070067:DSO support routines:DSO_load:could not load the shared library:dso_lib.c:244:
03-Feb-2016 11:32:22.363 error:260B6084:engine routines:DYNAMIC_LOAD:dso not found:eng_dyn.c:447:
03-Feb-2016 11:32:22.363 error:2606A074:engine routines:ENGINE_by_id:no such engine:eng_list.c:418:id=gost
(null): dst_lib_init: crypto failure
不过安装工作正常(我可以运行引用编译后的Matlab函数的Java程序)。取消设置LD_LIBRARY_PATH会修复网络文件,但我无法再运行程序
在EC2实例上安装:
在EC2实例上,它不会中断网络文件(nslookup可以)。相反,它会弄乱Python库文件。尝试使用任何aws cli命令时,出现以下错误:
File "/usr/bin/aws", line 19, in <module>
import awscli.clidriver
File "/usr/lib/python2.7/dist-packages/awscli/clidriver.py", line 16, in <module>
import botocore.session
File "/usr/lib/python2.7/dist-packages/botocore/session.py", line 25, in <module>
import botocore.config
File "/usr/lib/python2.7/dist-packages/botocore/config.py", line 18, in <module>
from botocore.compat import six
File "/usr/lib/python2.7/dist-packages/botocore/compat.py", line 139, in <module>
import xml.etree.cElementTree
File "/usr/lib64/python2.7/xml/etree/cElementTree.py", line 3, in <module>
from _elementtree import *
ImportError: PyCapsule_Import could not import module "pyexpat"
印刷系统。Python中的path显示lib-dynload已经存在了,所以似乎没有问题
当尝试运行程序时,我得到:
Exception in thread "main" java.lang.LinkageError: libXt.so.6: cannot open shared object file: No such file or directory
at com.mathworks.toolbox.javabuilder.internal.DynamicLibraryUtils.dlopen(Native Method)
at com.mathworks.toolbox.javabuilder.internal.DynamicLibraryUtils.loadLibraryAndBindNativeMethods(DynamicLibraryUtils.java:134)
at com.mathworks.toolbox.javabuilder.internal.MWMCR.<clinit>(MWMCR.java:1529)
at VectorAddExample.VectorAddExampleMCRFactory.newInstance(VectorAddExampleMCRFactory.java:48)
at VectorAddExample.VectorAddExampleMCRFactory.newInstance(VectorAddExampleMCRFactory.java:59)
at VectorAddExample.VectorAddClass.<init>(VectorAddClass.java:62)
at com.mypackage.Example.main(Example.java:13)
我现在处境艰难,真的不知道该怎么办
# 1 楼答案
请尝试以下命令:
# 2 楼答案
也许其他东西已经需要设置LD_LIBRARY_PATH才能工作。请确保不覆盖以下内容:
编辑:
好的,如果LD_LIBRARY_PATH最初为空,这表明Matlab附带的共享库与您的系统库不兼容:
建议
/usr/lib/libdns.so.100
需要libcrypto.so.1.0.0
,现在正在解析为MATLAB附带的一个,这是不兼容的您可以通过以下方式检查dll的依赖关系:
希望你能找到一个让MATLAB和你的系统都满意的配置。不幸的是,这可能涉及大量的尝试和错误
如果没有这样的配置,您可以仅在运行MATLAB时尝试设置LD_LIBRARY_路径:
LD_LIBRARY_PATH=$MATLAB\u LD_LIBRARY_PATH MATLAB
编辑2:
对于Python问题,它似乎归结为
pyexpat
,它是标准expat
XML解析器的包装器。尝试这样做(因为我现在没有Linux,所以猜出了我的名字):ldd/usr/local/lib/python2。7/站点包/libpyexpat。所以
看看这取决于什么。可能是
libexpat.so
,现在正在解析为MATLAB版本# 3 楼答案
可能对OP没有帮助,但是如果您使用MATLAB生成python包,您可以修改MATLAB为您的包创建的
__init__.py
文件具体而言,生成的
__init__.py
文件包含以下行(从MATLAB 2017a开始):对于Linux平台,您可以简单地将
LD_LIBRARY_PATH
替换为其他内容,例如MCR_LIBRARY_PATH
,以防止破坏共享LIB然后在使用python之前导出
MCR_LIBRARY_PATH