在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"按下安裝。

Xcode Command Line Tools Installed

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/)