(Mac,Matlab,bash)修改系统命令在Matlab中bash的路径



各位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,而不是将字符串附加到变量

中的最后一个路径。

最新更新