Effacer les filtres
Effacer les filtres

Mex can't find compiler after Xcode 7 update (R2015b)

21 vues (au cours des 30 derniers jours)
Austin Blanton
Austin Blanton le 18 Sep 2015
Commenté : Walter Roberson le 24 Juil 2019
I recently updated Xcode to version 7. I was able to use mex before, and now it thinks I don't have a valid compiler. I clearly have several valid C compilers:
$ which gcc
/usr/bin/gcc
$ which clang
/usr/bin/clang
Before I get waaay in the weeds with details, is there a way to point mex to a clearly installed compiler, or a mex config file to update?
Here is the verbose output:
$ mex -v Dependencies/anigaussm/anigauss_mex.c Dependencies/anigaussm/anigauss.c -output anigauss
Verbose mode is on.
Neither -compatibleArrayDims nor -largeArrayDims is selected.
Using -compatibleArrayDims. In the future, MATLAB will require the use of
-largeArrayDims and remove the -compatibleArrayDims option.
For more information:
http://www.mathworks.com/help/matlab/matlab_external/upgrading-mex-files-to-use-64-bit-api.html.
No MEX options file identified; looking for an implicit selection.
... Looking for compiler 'Xcode with Clang' ...
... Looking for environment variable 'DEVELOPER_DIR' ...No.
... Executing command 'xcode-select -print-path' ...Yes ('/Applications/Xcode.app/Contents/Developer').
... Looking for folder '/Applications/Xcode.app/Contents/Developer' ...Yes.
... Executing command 'which xcrun' ...Yes ('/usr/bin/xcrun').
... Looking for folder '/usr/bin' ...Yes.
... Executing command 'defaults read com.apple.dt.Xcode IDEXcodeVersionForAgreedToGMLicense' ...No.
... Executing command 'defaults read /Library/Preferences/com.apple.dt.Xcode IDEXcodeVersionForAgreedToGMLicense' ...Yes ('7.0').
... Executing command '
agreed=7.0
if echo $agreed | grep -E '[\.\"]' >/dev/null; then
lhs=`expr "$agreed" : '\([0-9]*\)[\.].*'`
rhs=`expr "$agreed" : '[0-9]*[\.]\(.*\)$'`
if echo $rhs | grep -E '[\."]' >/dev/null; then
rhs=`expr "$rhs" : '\([0-9]*\)[\.].*'`
fi
if [ $lhs -gt 4 ] || ( [ $lhs -eq 4 ] && [ $rhs -ge 3 ] ); then
echo $agreed
else
exit 1
fi
fi' ...Yes ('7.0').
... Executing command 'xcode-select -print-path' ...Yes ('/Applications/Xcode.app/Contents/Developer').
... Looking for folder '/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk' ...No.
... Looking for folder '/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk' ...No.
... Executing command 'find /Applications/Xcode.app/Contents/Developer -name MacOSX10.9.sdk' ...No.
... Executing command 'find $$ -name MacOSX10.10.sdk' ...No.
Did not find installed compiler 'Xcode with Clang'.
No supported compiler or SDK was found. For options, visit http://www.mathworks.com/support/compilers/R2015b/maci64.html.c
Looks like the Xcode SDK version has incremented, despite OSX still being 10.10:
$ ls /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs
MacOSX10.11.sdk
I tried creating a symlink there that points to MacOSX10.11.sdk, to no avail:
[...up to the fail point above...]
... Looking for folder '/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk' ...Yes.
... Executing command 'echo /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk | rev | cut -c1-10 | rev | egrep -oh '[0-9]+\.[0-9]+'' ...Yes ('10.10').
Found installed compiler 'Xcode with Clang'.
Options file details
-------------------------------------------------------------------
Compiler location: /Applications/Xcode.app/Contents/Developer
Options file: /Applications/MATLAB_R2015b.app/bin/maci64/mexopts/clang_maci64.xml
CMDLINE200 : /usr/bin/xcrun -sdk macosx10.10 clang -Wl,-twolevel_namespace -undefined error -arch x86_64 -mmacosx-version-min=10.10 -Wl,-syslibroot,/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk -bundle -Wl,-exported_symbols_list,"/Applications/MATLAB_R2015b.app/extern/lib/maci64/mexFunction.map" /var/folders/bt/bct7b52x0sb25z0pd5ky23xsg9dl8x/T//mex_32352732774360_62273/anigauss_mex.o /var/folders/bt/bct7b52x0sb25z0pd5ky23xsg9dl8x/T//mex_32352732774360_62273/anigauss.o -O -Wl,-exported_symbols_list,"/Applications/MATLAB_R2015b.app/extern/lib/maci64/mexFunction.map" -L"/Applications/MATLAB_R2015b.app/bin/maci64" -lmx -lmex -lmat -lc++ -o /Users/m29474/Desktop/code/selective_search_ijcv_with_python/anigauss.mexmaci64
CC : /usr/bin/xcrun -sdk macosx10.10 clang
DEFINES : -DMX_COMPAT_32 -DMATLAB_MEX_FILE
MATLABMEX : -DMATLAB_MEX_FILE
CFLAGS : -fno-common -arch x86_64 -mmacosx-version-min=10.10 -fexceptions -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk
INCLUDE : -I"/Applications/MATLAB_R2015b.app/extern/include" -I"/Applications/MATLAB_R2015b.app/simulink/include"
COPTIMFLAGS : -O2 -DNDEBUG
CDEBUGFLAGS : -g
LD : /usr/bin/xcrun -sdk macosx10.10 clang
LDFLAGS : -Wl,-twolevel_namespace -undefined error -arch x86_64 -mmacosx-version-min=10.10 -Wl,-syslibroot,/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk -bundle -Wl,-exported_symbols_list,"/Applications/MATLAB_R2015b.app/extern/lib/maci64/mexFunction.map"
LDBUNDLE : -bundle
LINKEXPORT : -Wl,-exported_symbols_list,"/Applications/MATLAB_R2015b.app/extern/lib/maci64/mexFunction.map"
LINKLIBS : -L"/Applications/MATLAB_R2015b.app/bin/maci64" -lmx -lmex -lmat -lc++
LDOPTIMFLAGS : -O
LDDEBUGFLAGS : -g
OBJEXT : .o
LDEXT : .mexmaci64
SETENV : CC="/usr/bin/xcrun -sdk macosx10.10 clang"
CXX="/usr/bin/xcrun -sdk macosx10.10 clang"
CFLAGS="-fno-common -arch x86_64 -mmacosx-version-min=10.10 -fexceptions -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk -DMX_COMPAT_32 -DMATLAB_MEX_FILE"
CXXFLAGS="-fno-common -arch x86_64 -mmacosx-version-min=10.10 -fexceptions -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk -DMX_COMPAT_32 -DMATLAB_MEX_FILE"
COPTIMFLAGS="-O2 -DNDEBUG"
CXXOPTIMFLAGS="-O2 -DNDEBUG"
CDEBUGFLAGS="-g"
CXXDEBUGFLAGS="-g"
LD="/usr/bin/xcrun -sdk macosx10.10 clang"
LDXX="/usr/bin/xcrun -sdk macosx10.10 clang"
LDFLAGS="-Wl,-twolevel_namespace -undefined error -arch x86_64 -mmacosx-version-min=10.10 -Wl,-syslibroot,/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk -bundle -Wl,-exported_symbols_list,"/Applications/MATLAB_R2015b.app/extern/lib/maci64/mexFunction.map" -L"/Applications/MATLAB_R2015b.app/bin/maci64" -lmx -lmex -lmat -lc++ -Wl,-exported_symbols_list,"/Applications/MATLAB_R2015b.app/extern/lib/maci64/mexFunction.map""
LDDEBUGFLAGS="-g"
DEVELOPER_DIR_CHECK :
XCODE_DIR : /Applications/Xcode.app/Contents/Developer
XCRUN_DIR : /usr/bin
XCODE_AGREED_VERSION : 7.0
ISYSROOT : /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk
SDKVER : 10.10
MATLABROOT : /Applications/MATLAB_R2015b.app
ARCH : maci64
SRC : /Users/m29474/Desktop/code/selective_search_ijcv_with_python/Dependencies/anigaussm/anigauss_mex.c;/Users/m29474/Desktop/code/selective_search_ijcv_with_python/Dependencies/anigaussm/anigauss.c
OBJ : /var/folders/bt/bct7b52x0sb25z0pd5ky23xsg9dl8x/T//mex_32352732774360_62273/anigauss_mex.o;/var/folders/bt/bct7b52x0sb25z0pd5ky23xsg9dl8x/T//mex_32352732774360_62273/anigauss.o
OBJS : /var/folders/bt/bct7b52x0sb25z0pd5ky23xsg9dl8x/T//mex_32352732774360_62273/anigauss_mex.o /var/folders/bt/bct7b52x0sb25z0pd5ky23xsg9dl8x/T//mex_32352732774360_62273/anigauss.o
SRCROOT : /Users/m29474/Desktop/code/selective_search_ijcv_with_python/Dependencies/anigaussm/anigauss_mex
DEF : /var/folders/bt/bct7b52x0sb25z0pd5ky23xsg9dl8x/T//mex_32352732774360_62273/anigauss.def
EXP : /Users/m29474/Desktop/code/selective_search_ijcv_with_python/anigauss.exp
LIB : /Users/m29474/Desktop/code/selective_search_ijcv_with_python/anigauss.lib
EXE : /Users/m29474/Desktop/code/selective_search_ijcv_with_python/anigauss.mexmaci64
ILK : /Users/m29474/Desktop/code/selective_search_ijcv_with_python/anigauss.ilk
MANIFEST : /Users/m29474/Desktop/code/selective_search_ijcv_with_python/anigauss.mexmaci64.manifest
TEMPNAME : /Users/m29474/Desktop/code/selective_search_ijcv_with_python/anigauss
EXEDIR : /Users/m29474/Desktop/code/selective_search_ijcv_with_python/
EXENAME : anigauss
OPTIM : -O2 -DNDEBUG
LINKOPTIM : -O
CMDLINE100_0 : /usr/bin/xcrun -sdk macosx10.10 clang -c -DMX_COMPAT_32 -DMATLAB_MEX_FILE -I"/Applications/MATLAB_R2015b.app/extern/include" -I"/Applications/MATLAB_R2015b.app/simulink/include" -fno-common -arch x86_64 -mmacosx-version-min=10.10 -fexceptions -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk -O2 -DNDEBUG /Users/m29474/Desktop/code/selective_search_ijcv_with_python/Dependencies/anigaussm/anigauss_mex.c -o /var/folders/bt/bct7b52x0sb25z0pd5ky23xsg9dl8x/T//mex_32352732774360_62273/anigauss_mex.o
CMDLINE100_1 : /usr/bin/xcrun -sdk macosx10.10 clang -c -DMX_COMPAT_32 -DMATLAB_MEX_FILE -I"/Applications/MATLAB_R2015b.app/extern/include" -I"/Applications/MATLAB_R2015b.app/simulink/include" -fno-common -arch x86_64 -mmacosx-version-min=10.10 -fexceptions -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk -O2 -DNDEBUG /Users/m29474/Desktop/code/selective_search_ijcv_with_python/Dependencies/anigaussm/anigauss.c -o /var/folders/bt/bct7b52x0sb25z0pd5ky23xsg9dl8x/T//mex_32352732774360_62273/anigauss.o
CMDLINE300_0 : rm -f /var/folders/bt/bct7b52x0sb25z0pd5ky23xsg9dl8x/T//mex_32352732774360_62273/anigauss_mex.o
CMDLINE300_1 : rm -f /var/folders/bt/bct7b52x0sb25z0pd5ky23xsg9dl8x/T//mex_32352732774360_62273/anigauss.o
-------------------------------------------------------------------
Building with 'Xcode with Clang'.
/usr/bin/xcrun -sdk macosx10.10 clang -c -DMX_COMPAT_32 -DMATLAB_MEX_FILE -I"/Applications/MATLAB_R2015b.app/extern/include" -I"/Applications/MATLAB_R2015b.app/simulink/include" -fno-common -arch x86_64 -mmacosx-version-min=10.10 -fexceptions -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk -O2 -DNDEBUG /Users/m29474/Desktop/code/selective_search_ijcv_with_python/Dependencies/anigaussm/anigauss_mex.c -o /var/folders/bt/bct7b52x0sb25z0pd5ky23xsg9dl8x/T//mex_32352732774360_62273/anigauss_mex.o
xcodebuild: error: SDK "macosx10.10" cannot be located.
xcrun: error: unable to find utility "clang", not a developer tool or in PATH
Help!
-Austin

Réponse acceptée

Ken Atwell
Ken Atwell le 18 Sep 2015
Modifié(e) : Ken Atwell le 20 Oct 2015
EDIT MathWorks has produced a patch for this issue. If at all possible, use the procedure outlined at http://www.mathworks.com/matlabcentral/answers/246507-why-can-t-mex-find-a-supported-compiler-in-matlab-r2015b-after-i-upgraded-to-xcode-7
Original Answer
This is an advanced maneuver, but get rid of that symlink and try doctoring this file:
>> edit ([matlabroot '/bin/maci64/mexopts/clang_maci64.xml'])
Toward the bottom, you will see a line that look like this, referencing "10.10":
<dirExists name="$$/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk" />
Copy and paste this line (immediately after the first) and change the second one to "10.11", like this:
<dirExists name="$$/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk" />
<dirExists name="$$/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk" />
Do this against for another instance in this file -- both must be modified.
This should allow you to link against the OS X 10.11 SDK, but please be aware that this is configuration that has not been validated by MathWorks.
  12 commentaires
Amod Agrawal
Amod Agrawal le 12 Oct 2016
Hey! I have been trying to get this to work with Xcode 8.0 (after macOS Sierra upgrade). Just changing this line didn't work for me. Did you change anything besides this as well?

Connectez-vous pour commenter.

Plus de réponses (4)

Kaipeng
Kaipeng le 19 Juin 2017
if you use macOS 10.12.5 Sierra with Xcode 8.3.3,this file will work for Matlab 2016a:

Chen
Chen le 13 Jan 2016
Hi Ken,
I am using 2014b, OSX 10.10.5 and installed Xcode 7. just tried to simply run 'mex fengdemo.F'. The fortran file is matlab example file. I made the change as you described above. 'mex -setup' seems ok;
I got this:
Building with 'gfortran'. f951: Warning: Nonexistent include directory '/Applications/MATLAB_R2014b.app/simulink/include' [-Wmissing-include-dirs]
Error using mex clang: error: no such file or directory: '1/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk'
Error in chentry (line 4) mex fengdemo.F;
Can you help?!
  5 commentaires
Chen
Chen le 13 Jan 2016
god! when i run 'sudo xcode-select -switch /Applications/Xcode.app/ ' It needs password.
Is there any way to modify matlab files instead of asking IT guys?
Walter Roberson
Walter Roberson le 13 Jan 2016
No, you will need the sudo unless you install MATLAB in your own directory instead of available across the machine... but you would need authorization from your IT people for that.

Connectez-vous pour commenter.


Jiefei Wang
Jiefei Wang le 17 Nov 2016
Modifié(e) : Walter Roberson le 17 Nov 2016
Hi all,
mine is like as follows but still can't use mex files.
<cmdReturns name="xcode-select -print-path"/>
<or>
<dirExists name="$$/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk" />
<dirExists name="$$/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk" />
<dirExists name="$$/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk" />
<cmdReturns name="find $$ -name MacOSX10.9.sdk" />
<cmdReturns name="find $$ -name MacOSX10.10.sdk" />
<cmdReturns name="find $$ -name MacOSX10.11.sdk" />
</or>
Any suggestions?
Thanks
  4 commentaires
Amanda Baia Campos
Amanda Baia Campos le 15 Mai 2017
Modifié(e) : Amanda Baia Campos le 15 Mai 2017
Hi, it says
Error using mex /Applications/MATLAB_R2016a.app/bin/maci64/mexopts/clang++_maci64 2.xml is not a valid XML file.
Walter Roberson
Walter Roberson le 15 Mai 2017
I might have accidentally uploaded aliases instead of the actual files. For R2016a try with the enclosed:

Connectez-vous pour commenter.


Lin Yuan
Lin Yuan le 9 Fév 2017
Modifié(e) : Lin Yuan le 9 Fév 2017
Another answer, but I think it's basically the same as the previous answers.
First, you need to locate to the c++ compiler in your Matlab. Mine is /Applications/MATLAB_R2016a.app/bin/maci64/mexopts
And open the clang++_maci64.xml file with any editor, check/add the following line of codes(as the attached image highlighted)
I think, if your Matlab version are older than the system version being released(e.g OS 10.12 Sierra), it shouldn't add them in the file, so just add them manually could probably solve this kind of problem.
  3 commentaires
Andy Zhang
Andy Zhang le 24 Juil 2019
Hi Eric,
Do you find the reasons of the error? I have the same issue.
Walter Roberson
Walter Roberson le 24 Juil 2019
In Sierra and later, Apple started enforcing a System Integrity feature.
The documented effect is that for some Apple provided apps that the app would ignore LD_LIBRARY_PATH and DYLD_LIBRARY_PATH and only link libraries in some places such /usr/lib.
The actual effect appears to be that it is doing that security for all or most applications in /Applications including matlab since it is installed there.
The work around is to copy the appropriate libraries into /usr/lib or to at least have a symbolic link there pointing to the actual location.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Introduction to Installation and Licensing dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by