我如何选择mex c对象文件(.o)输出位置?

8次浏览(最近30天)
格雷戈里·艾伦
格雷戈里·艾伦 2017年12月1日
回答: 大卫·芬克 2017年12月4日
我正在Mac OS X 10.11上开发一个mex函数,使用“Xcode with Clang”构建。我需要.o文件以便调试,我以前在不同的Mac上使用过一次,但现在mex的行为似乎不同了。
我执行如下命令:
墨西哥人-v mxiscale .c -outdir /mex/ mxiscale .c
o文件被写入:
/var/folders/vh/k8t5_9s13bl4cn8rhc8dhngh0000gn / T / mex_14438061018957_17444 /
此文件夹仅在MEX完成并删除之前存在。如何将.o文件输出到合理的位置并防止它们被自动删除?
MEX的输出:
详细的模式。
既不选择- compatiblearraydimms或- largearraydimms。
使用-在未来,相容性可能会变差,MATLAB将需要使用
-大光暗删除-compatibleAryDims选项。
为了更多信息:
//www.tatmou.com/help/matlab/matlab_external/upgrading -墨西哥人-文件- - - 64位api.html使用。
...正在查找编译器“Xcode with Clang”。。。
...正在寻找环境变量‘DEVELOPER_DIR’……
...执行命令'xcode-select -print-path'…是的(' /应用程序/ xcode /内容/开发人员”)。
...正在查找文件夹“/Applications/Xcode.app/Contents/Developer”…是。
...正在执行命令“which xcrun”…是('/usr/bin/xcrun')。
...正在查找文件夹“/usr/bin”…
...执行命令'defaults read com.apple.dt.Xcode IDEXcodeVersionForAgreedToGMLicense'…
...正在执行命令“defaults read/Library/Preferences/com.apple.dt.Xcode IDEXcodeVersionForAgreedToGMLicense”…Yes('8.0')。
...执行命令的
同意= 8.0
如果回声$同意| grep -E“[\ \ "]。”> / dev / null;然后
lhs=`expr“美元同意”:“\ ([0 - 9 ]*\)[\.].*'`
rhs =`expr“美元同意”:“[0 - 9 ]*[\.]\(.*\)$'`
如果回声$rhs | grep-E'[\."]'> / dev / null;然后
rhs =`expr“$rhs”:“\ ([0 - 9 ]*\)[\.].*'`
fi
如果[$LHS -gt 4] || ([$LHS -eq 4 && [$RHS -ge 3]);然后
回声美元的同意
其他的
退出1
fi
fi '...是('8.0')。
...执行命令'xcode-select -print-path'…是的(' /应用程序/ xcode /内容/开发人员”)。
...正在查找文件夹“/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk”…是的。
...执行命令'xcode-select -print-path'…是的(' /应用程序/ xcode /内容/开发人员”)。
...正在查找文件夹“/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk”…是的。
...echo /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12。SDK | rev | cut -c1-10 | rev | egrep -oh '[0-9]+\。[0 - 9] +”……是的(“10.12”)。
发现安装编译器'Xcode with Clang'。
选择权文件详细信息
-------------------------------------------------------------------
编译程序地点:/ / xcode /内容/应用开发者
选择权文件:/用户/ gregoryallan /图书馆/应用支持/ MathWorks / MA金宝appTLAB / R2016b / mex_C_maci64.xml
CMDLINE200:/usr/bin/xcrun-sdk macosx10.12 clang-Wl, -twolevel_namespace未定义错误-arch x86_64 -mmacosx-version-min=10.9、-syslibroot /应用程序/ xcode /内容/开发/平台/ MacOSX.platform /开发/ sdk / MacOSX10.12。sdk包- wl -exported_symbols_list,“/应用程序/ MATLAB_R2016b.app /走读生/ lib / maci64 / mexFunction.map”/var/folders/vh/k8t5_9s13bl4cn8rhc8dhngh0000gn/T/mex_1444622166685_17444/mxiscalar.o/var/folders/vh/k8t5_9s13bl4cn8rhc8dhngh0000gn/T/mex_1444622166685_17444/c_mexapi_version.o-o-o-Wl,-导出符号列表,“/Applications/MATLAB_r2016 b.app/extern/lib/maci64/c_exportsmexfileversion.map”- l“/应用程序/ MATLAB_R2016b.app / bin / maci64”-lmx-lmex-lmat-lc++-o/mex/mxiscalar/mxiscalar.mexmaci64
科科斯群岛: /usr/bin/ xrun -sdk macosx10.12
定义:-DMX\u COMPAT\u 32-DMATLAB\u MEX\u文件
MATLABMEX: -DMATLAB_MEX_FILE
MACOSX_DEPLOYMENT_TARGET: 10.9
CFLAGS:-fno公共拱门x86_64-mmacosx-version-min=10.9 -fexceptions -isysroot /Applications/Xcode.app/Contents/Developer/平台/MacOSX.platform/Developer/ sdk /MacOSX10.12.sdk
包括:-I“/应用程序/ MATLAB_R2016b.app /走读生/包括“-我“/Applications/MATLAB_r2016 b.app金宝app/simulink/include”
COPTIMFLAGS: -O2 -fwrapv -DNDEBUG
CDEBUGFLAGS:-g
LD: /usr/bin/ xrun -sdk macosx10.12
LDFLAGS:-Wl,-twolevel_命名空间-未定义错误-arch x86_64 -mmacosx-version-min=10.9、-syslibroot /应用程序/ xcode /内容/开发/平台/ MacOSX.platform /开发/ sdk / MacOSX10.12。sdk包- wl -exported_symbols_list,“/应用程序/ MATLAB_R2016b.app /走读生/ lib / maci64 / mexFunction.map”
LDBUNDLE:包
FUNCTIONMAP:“/应用程序/ MATLAB_R2016b.app /走读生/ lib / maci64 / mexFunction.map”
版本映射:“/Applications/MATLAB_r2016 b.app/extern/lib/maci64/c_exportsmexfileversion.map”
-exported_symbols_list LINKEXPORT: - wl,“/应用程序/ MATLAB_R2016b.app /走读生/ lib / maci64 / mexFunction.map”
LINKEXPORTVER:-Wl,-导出的符号列表,“/Applications/MATLAB_r2016 b.app/extern/lib/maci64/c_exportsmexfileversion.map”
LINKLIBS: - l“/应用程序/ MATLAB_R2016b.app / bin / maci64”-lmx-lmex-lmat-lc++
LDOPTIMFLAGS: - o
LDDEBUGFLAGS: - g
OBJEXT: . o
LDEXT:.mexmaci64
SETENV: CC ="/usr/bin/ xrun -sdk macosx10.12 clang"
CXX="/usr/bin/ xrun -sdk macosx10.12 clang"
CFLAGS=-fno-common -arch x86_64 -mmacosx-version-min=10.9sdk -DMX_COMPAT_32 -DMATLAB_MEX_FILE”
CXXFLAGS =-fno-common -arch x86_64 -mmacosx-version-min=10.9sdk -DMX_COMPAT_32 -DMATLAB_MEX_FILE”
COPTIMFLAGS =“- 02 -fwrapv -DNDEBUG”
CXXOPTIMFLAGS =“- 02 -fwrapv -DNDEBUG”
CDEBUGFLAGS =“-g”
CXXDEBUGFLAGS =“-g”
LD ="/usr/bin/ xrun -sdk macosx10.12 clang"
LDXX="/usr/bin/ xrun -sdk macosx10.12 clang"
LDFLAGS =“-Wl,-twolevel_名称空间-未定义错误-arch x86_64-mmacosx version min=10.9-Wl,-syslibroot,/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk-bundle-Wl,-导出的_符号列表,”/Applications/MATLAB_r2016 b.app/extern/lib/maci64/mexFunction.map“-L”/应用程序/MATLAB_R2016b.app/bin/maci64" -lmx -lmex -lmat - llc ++ -Wl,- export_symbols_list,"/Applications/MATLAB_r2016 b.app/extern/lib/maci64/mexFunction.map""
LDDEBUGFLAGS =“-g”
DEVELOPER_DIR_CHECK:
XCODE_DIR:/Applications/Xcode.app/Contents/Developer
XCRUN_DIR:工作
XCODE_版本:8.0
ISYSROOT: / / xcode /内容/应用开发人员/平台/ MacOSX.platform /开发/ sdk / MacOSX10.12.sdk
SDKVER:10.12
MATLABROOT: / / MATLAB_R2016b.app应用
拱:maci64
SRC: /墨西哥人/ mxisscalar / mxisscalar.c/Applications/MATLAB_r2016 b.app/extern/version/c_mexapi_version.c
OBJ: /var/folders/vh/k8t5_9s13bl4cn8rhc8dhngh0000gn / T / mex_14446221666685_17444 / mxisscalar.o, / var /文件夹/ vh / k8t5_9s13bl4cn8rhc8dhngh0000gn / T / mex_14446221666685_17444 / c_mexapi_version.o
OBJS: /var/folders/vh/k8t5_9s13bl4cn8rhc8dhngh0000gn / T / mex_14446221666685_17444 / mxisscalar.o/var/folders/vh/k8t5_9s13bl4cn8rhc8dhngh0000gn/T/mex_14446221666685_17444/c_mexapi_version.o
SRCROOT:/mex/mxiscalar/mxiscalar
DEF: /var/folders/vh/k8t5_9s13bl4cn8rhc8dhngh0000gn / T / mex_14446221666685_17444 / mxisscalar.def
经验值:/mex/mxiscalar/mxiscalar.exp
解放党: /墨西哥人/ mxiscalar / mxisscalar.lib
EXE:/mex/mxiscalar/mxiscalar.mexmaci64
同类:/mex/mxiscalar/mxiscalar.ilk
显示:/mex/mxiscalar/mxiscalar.mexmaci64.manifest
TEMPNAME:/mex/mxiscalar/mxiscalar
EXEDIR: /墨西哥人/ mxiscalar /
EXENAME: mxisscalar
OPTIM: -O2 -fwrapv -DNDEBUG
LINKOPTIM: - o
CMDLINE100_0:/usr/bin/xcrun-sdk macosx10.12 clang-c-DMX\u COMPAT\u 32-DMATLAB_MEX_FILE /应用程序/ MATLAB_R2016b我”。app /走读生/包括“我”/应用程序/ MATLAB_R2016b。app/金宝appsimulink/include" -fno-common -arch x86_64 -mmacosx-version-min=10.9 -fexceptions -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12. "-o /var/ folds /vh/k8t5_9s13bl4cn8rhc8dhngh0000gn/T/mex_14446221666685_17444/mxisscalar.o /var/ folds /vh/k8t5_9s13bl4cn8rhc8dhngh0000gn/T/墨西哥
CMDLINE100_1:/usr/bin/xcrun-sdk macosx10.12 clang-c-DMX\u COMPAT\u 32-DMATLAB_MEX_文件-I”/Applications/MATLAB_R2016b.app/extern/include“-I”/Applications/MATLAB_R2016b.app/simu金宝applink/include“-fno common-arch x86_64-mmacosx version min=10.9-feexceptions-isysroot/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk-O2-fwrapv-DNDEBUG/Applications/MATLAB_r2016 b.app/extern/version/c\u mexapi_version.c-o/var/folders/vh/k8t5_9s13bl4cn8rhc8dhngh0000gn/T/mex_1444622166685_17444/c_mexapi_version.o
-------------------------------------------------------------------
建筑使用“带叮当声的Xcode”。
/usr/bin/ xrun -sdk macosx10.12-c-DMX兼容32-DMATLAB_MEX_FILE /应用程序/ MATLAB_R2016b我”。app /走读生/包括“我”/应用程序/ MATLAB_R2016b。app/金宝appsimulink/include" -fno-common -arch x86_64 -mmacosx-version-min=10.9 -fexceptions -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12. "-o /var/ folds /vh/k8t5_9s13bl4cn8rhc8dhngh0000gn/T/mex_14446221666685_17444/mxisscalar.o /var/ folds /vh/k8t5_9s13bl4cn8rhc8dhngh0000gn/T/墨西哥
/usr/bin/ xrun -sdk macosx10.12-c-DMX兼容32-DMATLAB_MEX_文件-I”/Applications/MATLAB_R2016b.app/extern/include“-I”/Applications/MATLAB_R2016b.app/simu金宝applink/include“-fno common-arch x86_64-mmacosx version min=10.9-feexceptions-isysroot/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk-O2-fwrapv-DNDEBUG/Applications/MATLAB_r2016 b.app/extern/version/c\u mexapi_version.c-o/var/folders/vh/k8t5_9s13bl4cn8rhc8dhngh0000gn/T/mex_1444622166685_17444/c_mexapi_version.o
/usr/bin/ xrun -sdk macosx10.12- wl, -twolevel_namespace未定义错误-arch x86_64 -mmacosx-version-min=10.9、-syslibroot /应用程序/ xcode /内容/开发/平台/ MacOSX.platform /开发/ sdk / MacOSX10.12。sdk包- wl -exported_symbols_list,“/应用程序/ MATLAB_R2016b.app /走读生/ lib / maci64 / mexFunction.map”/var/folders/vh/k8t5_9s13bl4cn8rhc8dhngh0000gn/T/mex_1444622166685_17444/mxiscalar.o/var/folders/vh/k8t5_9s13bl4cn8rhc8dhngh0000gn/T/mex_1444622166685_17444/c_mexapi_version.o-o-o-Wl,-导出符号列表,“/Applications/MATLAB_r2016 b.app/extern/lib/maci64/c_exportsmexfileversion.map”- l“/应用程序/ MATLAB_R2016b.app / bin / maci64”-lmx-lmex-lmat-lc++-o/mex/mxiscalar/mxiscalar.mexmaci64
墨西哥人成功完成。

接受的答案

大卫·芬克
大卫·芬克 2017年12月4日
要进行调试,需要添加调试标志-g,以便mex知道如何使用调试符号进行编译:
墨西哥人-g -v mxiscale .c -outdir /mex/ mxiscale .c
我刚刚在Mac OS 10.11.6上尝试了yprime.c示例,并且.mexmaci64和.o文件都放在-outdir给定的目录中。

更多的答案(0)

社区寻宝

在MATLAB Central中查找宝藏,了解社区如何帮助您!

开始狩猎!