Why report “/usr/loca​l/lib/MatL​abLib/myma​tlab.dylib​: no suitable image found. Did find: /usr/local​/lib/MatLa​bLib/mymat​lab.dylib: open() failed with errno=13”?

I build one Matlab script to mymatlab.dylib, but as I invoke it, it reported:
/usr/local/lib/MatLabLib/mymatlab.dylib: no suitable image found. Did find: /usr/local/lib/MatLabLib/mymatlab.dylib: open() failed with errno=13”
/usr/local/lib/MatLabLib/mymatlab.dylib: stat() failed with errno=22
I'm using MATLAB_R2019a, what does these errorno (13 / 22) mean?

Answers (3)

Error 13 means "permission denied".
This error is not given for the case where a file is not found. The error is given if a file is found but the user does not have authorization to use it, or if there is a directory in the path to the file that the user does not have authorization to examine (no directory x permission for the user). When the user does not have x permission all the way to the file then permission denied can occur even if the file does not exist.
Error 22 means "invalid argument"
Did find: /usr/local/lib/MatLabLib/mymatlab.dylib: open() failed with errno=13”
That part tells us that you do have x permission on all the appropriate directories, but that you do not have read permission on mymatlib.dylib .
It is possible that /usr/local/lib/MatLabLib/mymatlab.dylib exists as a symbolic link to a file (possibly in a different directory) that you do not have read access to. You should use
!ls -ld /usr/local/lib/MatLabLib/mymatlab.dylib
to see what you can find out about the file.
The Error 22 is probably a consequence of not being able to read the dylib file.
So you are doing this on Mac, right? Did you try to use the env var LD_LIBRARY_PATH to point to your dylib?
Use this from a terminal can tell you if you dylib has more dependencies.
otool -L

3 Comments

Yes, it's on Mac.
But this .dylib will be run at other Mac which didn't install Xcode so don't support "otool -L" command. Which running environment is a python like script application.
It is most likely related to LD_LIBRARY_PATH.
On your own Mac, use 'otool -L' to figure out its dependencies. It shall be the same in the other Mac.
  1. Make sure all the dependencies on your Mac have been installed properly on the other Mac.
  2. Use LD_LIBRARY_PATH on the other Mac to point to your dylib and all the dependencies you figured out in step 1.
I found the reason at last, it's because the .dylib was set "Not Access", so report open failed, but "Did find".
Thanks for your help!

Sign in to comment.

kd=300;
c=pid(kd);
T=feedback(c*p,1)
Unrecognized function or variable 'p'.
t=0:01:2
step(T,t)

1 Comment

Please explain in more detail how this answer solves the problem of errno 13 or errno 22 ?

Sign in to comment.

Categories

Find more on Instrument Control Toolbox in Help Center and File Exchange

Products

Release

R2019a

Asked:

on 13 Aug 2021

Commented:

on 23 Oct 2025

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!