在MATLAB上用mex編譯C/C++檔案是稀鬆平常,但卻又常困擾著開發者。不外乎就是找不到gcc或是找不到Standard Library中的header file,像是stdlib.h, stddef.h等等。諸如以下發生的錯誤訊息:
/Applications/MATLAB_R2011b.app/bin/mex: line 305: gcc-4.2: command not found
/Applications/MATLAB_R2012a.app/extern/include/matrix.h:852:20: error: stdlib.h: No such file or directory
筆者的開發環境:
- Mac OSX 10.8.3
- MATLAB R2012a
- Xcode 4.6.1
主要可細分為六個步驟:
1. 確認Xcode放置位置
需為"/Applications/Xcode.app"
2. 安裝"Command Line Tools"
開啟Xcode -> Preference -> Downloads -> Components,找到"Command Line Tools"按下安裝。
3. 確認MATLAB抓到的Xcode版本
完成以上兩個步驟後,在Command Window內輸入"!xcodebuild -version",如筆者開發環境,應輸出Xcode 4.6.1的訊息
4. 下載官方提供的Patch
5. 安裝Patch
在terminal輸入以下指令
{% codeblock apply patch %}
cd /Applications/MATLAB_R2012a.app/
!unzip -o ~/Downloads/optsPatch_MACOSX8.patch
## 6. MATLAB套用新設定
在MATLAB的Command Windows下輸入"mex -setup",選擇第一個,即MATLAB安裝目錄下bin內的mexopts.sh該檔案。如此一來即可解決mex上的問題。
### Reference
* [Can I use Xcode 4.2 to 4.6 as my C or C++ compiler in MATLAB? (Updated: 02/04/13)](http://www.mathworks.com/support/solutions/en/data/1-FR6LXJ/)