各位Matlab用户好,
我想知道是否有人可以为我提供一些关于如何在Matlab中更改bash路径环境的见解。
基本上,如果我在Matlab之外的终端中启动给定的应用程序,一切都可以正常工作。(例如:3dMean
)但是,如果我在Matlab中使用系统命令(system('~/abin/3dMean'
)进行尝试(正如您所看到的,我必须告诉Matlab它位于何处),我会得到以下错误:
dyld: Library not loaded: /usr/X11/lib/libpng12.0.dylib
Referenced from: /Users/kjio/abin/3dMean
Reason: Incompatible library version: 3dMean requires version 42.0.0 or later, but libpng12.0.dylib provides version 40.0.0
~/abin/3dMean: Trace/breakpoint trap
所以我检查了Matlab中的bash PATH,这是输出:
system('echo $PATH')
/usr/bin:/bin:/usr/sbin:/sbin
我尝试用以下命令调用应用程序:
system('env PATH=~/abin LD_LIBRARY_PATH=/usr/X11/lib 3dMean')
但这也不起作用。我得到相同的错误信息。
接下来我试着改变PATH:
setenv('PATH', [TEMP; getenv('PATH') ]);
变量TEMP是终端$PATH中所有感兴趣的路径。现在我可以输入
system('3dMean')
但是我仍然得到相同的错误信息。
是否有办法更新maci64环境,或者我如何改变Matlab中的bash PATH来克服这个问题?
谢谢
看起来Matlab是针对不同的PNG库链接,而不是从命令行运行3dMean。您可能想要更改matlab中的DYLD_LIBRARY_PATH(而不是LD_LIBRARY_PATH)以指向新版本的libpng
我想一步一步地介绍如何在Matlab中为Mac上的CUDA设置PATH, DYLD_LIBRARY_PATH和其他系统变量(因为这是我正在研究的)
PATH = getenv('PATH');
setenv('PATH',[PATH ':/Developer/NVIDIA/CUDA-6.0/bin']);
libpath = getenv('DYLD_LIBRARY_PATH');
setenv('DYLD_LIBRARY_PATH',[libpath ':/Developer/NVIDIA/CUDA-6.0/lib']);
此外,'/Developer'前面的':'也很重要它的功能是添加一个PATH,而不是将字符串附加到变量