共计 2028 个字符,预计需要花费 6 分钟才能阅读完成。
1MCR 简介
MCR 之前是 Matlab Component Runtime 的缩写,后更名为 Matlab Compiler Runtime。MCR 实际上是一组独立的共享库,也即是常说的动态连接库,所起的作用是使得你可以执行编译过的 matlab 文件,与 matlab 提供的另外两个库 —- 数学库和图形库不同之处在于它支持 matlab 语言所有的特性,而不仅仅是数学计算和图形功能。换句话说他的作用就是给编译后的 matlab 文件执行提供一个环境。
并且 MCR 是一个免费的版本,不需要购买 Matlab Full Version 的 License,就可以运行 Matlab 程序。
2MCR 安装和使用
2.1 下载 MCR
下载地址:http://www.mathworks.com/products/compiler/mcr/。
本例中选择 R2012a (7.17) 版本,因为 MCR 的版本需要和 Matlab 编译器的版本一致才能正常运行。下载文件为:MCR_R2012a_glnxa64_installer.zip。
2.2 安装 MCR
本文只讨论 Linux 版本 MCR 的安装和使用。
首先,将下载的安装文件 zip 包上传到 Linux 服务器上的某个目录下,以 /tmp/ 为例;
然后依次执行下面的命令:
进入目录:cd /tmp
解压缩:unzip MCR_R2012a_glnxa64_installer.zip -d MCR_R2012a_glnxa64_installer
进入子目录:cd MCR_R2012a_glnxa64_installer
安装:./install -mode silent -agreeToLicense yes
当出现下面的字样的时候,就表示 MCR 安装成功了:
Exiting with status 0
End – Successful.
Finished
2.3 配置 MCR
当安装成功的时候,会提示配置一些系统环境变量,下面详述。
在 /etc/profile 文件的最后添加如下几行环境变量(如果安装的 MCR 版本不一样的话,路径可能会有不同,需要注意修改):
export MCR_HOME=/usr/local/MATLAB/MATLAB_Compiler_Runtime
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH: $MCR_HOME/v717/runtime/glnxa64:$MCR_HOME/v717/sys/os/glnxa64:$MCR_HOME/v717/sys/java/jre/glnxa64/jre1.6.0/lib/amd64/native_threads:$MCR_HOME/v717/sys/java/jre/glnxa64/jre1.6.0/lib/amd64/server:$MCR_HOME/v717/sys/java/jre/glnxa64/jre1.6.0/lib/amd64
export XAPPLRESDIR=$MCR_HOME/v717/X11/app-defaults
然后执行下面的命令使之生效:
source /etc/profile
2.4 使用 MCR
下面举一个简单的例子来说明如何使用 MCR,至于更高级的用法请继续深入研究。
2.4.1 编译.m 文件
MCR 仅仅提供了一个运行环境,并没有提供编译环境,因此还需要在安装了 Matlab 编译环境的服务器上对.m 文件进行编译。
创建一个简单的 main.m 文件,文件内容如下:
clear all;clc;
diary(‘/tmp/matlab_log.txt’);
diary on;
disp([‘begin TIME…’ datestr(now,31)]);
a = 1985;
b = a * 3;
disp([num2str(a) ‘ * 3 = ‘ num2str(b)]);
disp([‘end TIME…’ datestr(now,31)]);
diary off;
quit;
这个.m 文件仅仅进行一些简单的 Matlab 运算,并将结果打印到 /tmp/matlab_log.txt 中,执行完毕之后就退出。
执行下面的命令对其进行编译:
mcc -mv main.m
然后将会产生两个文件:main 和 run_main.sh
其中 main 是编译后的二进制文件,run_main.sh 的是一个 bash 脚本文件,该脚本首先会设置一些环境变量然后执行 main 文件。两个文件的区别是:如果已经配置了前文中的环境变量的话,直接执行 main 文件即可,没有配置环境变量的话就需要执行 run_main.sh。
2.4.2 运行.m 文件
将上步骤编译产生的 main 和 run_main.sh 拷贝到安装了 MCR 的服务器上,然后就可以直接执行它们来运行 Matlab 程序了。
执行./main 或者./run_main.sh,就会产生类似下面的结果:
begin TIME…2014-01-29 11:07:32
1985 * 3 = 5955
end TIME…2014-01-29 11:07:32