Using Matlab runtime on Mac and Linux - matlab

I am trying to use MCR to run an executable file that I created using
mcc -mv mycode.m
I installed MCR (2017a Matlab) for Mac from here https://uk.mathworks.com/products/compiler/matlab-runtime.html. After this, I edited the .bashrc file to set the path as instructed at the end of installation by:
export DYLD_LIBRARY_PATH=/Applications/MATLAB/MATLAB_Runtime/v92/runtime/maci64:/Applications/MATLAB/MATLAB_Runtime/v92/sys/os/maci64:/Applications/MATLAB/MATLAB_Runtime/v92/bin/maci64
After the above I typed in terminal to run the executable file as:
sh mycode.sh
But this gives the following message
Usage: mycode.sh deployedMCRroot args
Can anyone help me with what I may be missing here?
I am right now installing MCR on the same machine on which I used MATLAB to
generate executable file. I am doing this to test the output file.

deployedMCRroot refers to the directory in which you installed the MCR. Supposing that your script doesn't require any additional argument, if you installed MCR under /Applications/MCR/, you should type the following command in order to make your script work:
sh mycode.sh /Applications/MCR/
Normally, at installation time, the MCR framework is installed in the chosen directory but placed into a subfolder describing its version. So it's possible that you may be required the correct MCR framework specifying the proper version as follows:
sh mycode.sh /Applications/MCR/v70/

Related

How to configure SWI-prolog with Java on Eclipse on OS X (JPL)

I am trying to get Java and Prolog to work together (on OS X 10.11.1). What I want, is just to input my Prolog Queries from Java.
When I run Java code such like
PrologProcess process = Connector.newPrologProcess();
process.queryOnce(query);
I get the following Error:
java.io.IOException: Cannot run program "swipl": error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
...
First I did was adding entries to my PATH variable as I suppose that SWIProlog could not been found, but it showed no effect.
My PATH contains:
/opt/local/lib/swipl-7.2.3/
/opt/local/lib/swipl-7.2.3/bin
/opt/local/lib/swipl-7.2.3/bin/x86_64-darwin15.0.0/swipl
/opt/local/lib/swipl-7.2.3/bin/swipl.home
/Applications/SWI-Prolog.app/Contents/swipl/lib/jpl.jar
/Applications/SWI-Prolog.app/Contents/swipl/bin/x86_64- darwin15.0.0/swipl
/Applications/SWI-Prolog.app/Contents/swipl/
/Applications/SWI-Prolog.app/Contents/
Hope somebody knows whats up.
Any ideas?
Several of your PATH entries make no sense. Try on Terminal.app window:
$ which swipl
That will tell where the swipl executable is located. As it seems that you also have installed the SWI-Prolog.app GUI application, the correct path to the executable is:
/Applications/SWI-Prolog.app/Contents/MacOS/
Also note that Mac OS X GUI applications don't run on top of a shell and thus don't inherit the environment variable definitions that you use for command-line commands. But Eclipse allows in one of its preferences panel to define environment variables there.

Netgen with EIDORS

i want to run netgen in a command line in EIDORS Matlab but every time i come across this problem that matlab ask me for the path of the netgen. i receive this message every time.
'ng' is not recognized as an internal or external command,
operable program or batch file.
Netgen call failed. Is netgen installed and on the search path?
If you are running under windows, I can attempt to create
a batch file to access netgen.
Please enter the directory in which to find netgen.
If you don't have a copy, download it fromhttp://www.hpfem.jku.at/netgen/
Note that you MUST use names without spaces. Thus
instead of C:/Program Files/ write C:/Progra~1/
netgen_path?
yet i define new system variable in windows advanced system configuration and over there i gave the path of the tcl library but it didn't work.
May any body help me ?
Install netgen first. Go here to download:
http://sourceforge.net/projects/netgen-mesher/
Go "Files" entry to download more variant version of netgen. Take note that EIDORS 3.6 is only compatible up to the latest version of netgen-5.0.
I am using Windows 7, 64-bit Operating System. Installation of netgen with x64 and Win32 are worked fine for me. But because as you said, EIDORS requires netgen path to be no space, so when installation, I choose a path other than default "Program Files" (or similar), which has no space.
When EIDORS asks for the netgen path, give the path name until "\bin". These procedures are worked in my computer.
You can place the netgen.exe path " ...\bin " within the matlab toolbox:
How to Set Path in Matlab
thereby not needing to paste the path into EIDORS each time you run it in MATLAB.
Also downloading EIDORS 3.8 with Netgen 5.3 as a zip file avoids having to install netgen separately.

MATLAB 2014a (8.3) Compiler Runtime Errors libmwlaunchermain.so

MATLAB 2014a (8.3) Runtime Compiler (MCR) Errors when trying to launch deployed (using
deploy tool) application in Ubuntu 13.04.
Right after installation of MCR if one runs the deployed application following error appears:
error while loading shared libraries: libmwlaunchermain.so: cannot open shared object file: No such file or directory.
Since I have already found a solution to this problem wasting a day, I just want to share it:
This seems to be a problem of MATLAB MCR installation script designed for Linux by MathWorks. Furthermore, it is a result of a known Ubuntu bug. To fix it, add your MCR to the $PATH as shown below:
First make sure to add the missing files to the right folder, in terminal:
sudo cp /usr/local/MATLAB/MATLAB_Compiler_Runtime/v83/runtime/glnxa64/* /usr/local/MATLAB/MATLAB_Compiler_Runtime/v83/bin/glnxa64
Add the proper library folder to your .profile, such that this change will stay after logout
ubuntu: gedit .profile
In the end of the file add following lines:
#MATLAB MCR
export LD_LIBRARY_PATH=/usr/local/MATLAB/MATLAB_Compiler_Runtime/v83/bin/glnxa64
export XAPPLRESDIR=/usr/local/MATLAB/MATLAB_Compiler_Runtime/v83/X11/app-defaults
export PATH=$PATH:$LD_LIBRARY_PATH
export PATH=$PATH:$XAPPLRESDIR
Invoke following code in the terminal to make sure that Ubuntu bug doesn't re-write your variable:
echo STARTUP=\"/usr/bin/env LD_LIBRARY_PATH=\${LD_LIBRARY_PATH} \${STARTUP}\" | sudo tee /etc/X11/Xsession.d/90preserve_ld_library_path
Reboot
If this solution doesn't work, try to reinstall MATLAB MCR 8.3 from the MathWorks website and repeat the steps.
In my case (Matlab R2016b = v91), the binary generated by Matlab was accompanied by a shell script which sets up the LD_LIBRARY_PATH for me. If I just run
./run_scriptname.sh
it complains about the missing <deployedMCRroot>. So running the script with
./run_scriptname.sh /home/user/MatlabMCR/v91
it worked out of the box.
For me, it was not obvious that the path shown above is the <deployedMCRroot> because I chose /home/user/MatlabMCR as installation directory. And with the wrong path specified, it led to the same error message.

Running Matlab MCR and MATLAB on the Same Machine

I'm having trouble getting a compiled .exe file to run with MCR instead of Matlab (I can tell because the program is using multiple threads, which it would not do if it were running with MCR). The MATLAB documentation (http://www.mathworks.com/help/toolbox/compiler/f12-999353.html) says:
"To run deployed components against the MCR install, mcr_root\ver\runtime\win32|win64 must appear on your system path before matlabroot\runtime\win32|win64.
If mcr_root\ver\runtime\arch appears first on the compiled application path, the application uses the files in the MCR install area.
If matlabroot\runtime\arch appears first on the compiled application path, the application uses the files in the MATLAB Compiler installation area."
Can anyone connect the dots a bit more for me? I don't know what this means. Thanks!
I had the same problem: my compiled code was multithreaded, which I did not want.
The problem got solved by compiling with the option:
-R -singleCompThread
You need to set properly the PATH global environment variable in Windows. How you do it exactly depends on Windows version.
Here is the first link from Google by query "set path on Windows": http://www.computerhope.com/issues/ch000549.htm
This variable is a list of directories. Make sure you have a directory with MCR executable earlier in this list than a directory with MATLAB executable.

Runtime error for MCC compiled program using parfor

I have problems running a program compiled with MCC that uses parfor. The non-compiled .m version works (no bug). When I run the compiled version, I get
"distcomp.remoteparfor" is undefined. I believe I exactly have the error described in
the following link.
http://www.mathworks.com/support/solutions/en/data/1-PAHWE/index.html?product=CO&solution=1-PAHWE
However, since MCR is not installed on my machine (got Matlab and MCC),
I am wondering what the pathes $APPNAME_mcr/java/jar/toolbox and
$MCR/MATLAB Component Runtime/v70/java/jar/toolbox correspond to. I found
the distcomp.jar file in C:\Program Files\MATLAB\R2011b\java\jar\toolbox, but I don't know where to put it since see any path corresponding to $MCR/MATLAB Component Runtime/v70/java/jar/toolbox since MCR is not installed.
Thanks a lot!
Fred
No need to install the MCR if you are simply trying to run the application on the same machine that has MATLAB. The question to ask is, HOW are you launching the compiled application? From a DOS command window? From within MATLAB using the SYSTEM command?
If you are launching the application from a DOS / UNIX command line, then the important thing to keep in mind is that the MATLAB binaries need to be on your system path i.e. just make sure:
$MATLABROOT\bin\$ARCH
is on your system path. Where $MATLABROOT is the matlab installation folder, and $ARCH is your system architecture. For example:
c:\work\matlab\bin\win64
on my machine since my installation folder which contains MATLAB is:
c:\work
and i am on a win64 machine.
The problem is solved. The solution is to make the program
a function instead of a script :
http://www.mathworks.com/matlabcentral/answers/22825-parfor-errors-when-file-is-compiled