まずはXcodeを入れましょう。これはWindowsのVisual StudioみたいなGUI環境を含んだ開発環境みたい。
僕がいじったのはMacOS X 10.3付属のXcodeですが、ディスク開いていきなりのところにあるインストーラーをダブルクリックすると、一通りソフトが入ったような感じ。
でも、早速コマンドラインからgcc使おうとすると、
$ gcc test.c
ld: can't locate file for: -lcrt1.o
というエラー。
原因だけど、
ここによると、
以下のファイルが/usr/lib/に無いのが原因らしい。
- crt1.o
- gcrt1.o
- dylib1.o
- bundle1.o
これらのファイルですが、XcodeのCDのPackagesフォルダの中にある、MacOSX10.3.0 SDK をインストールすると
/Developer/SDKs/MacOSX10.3.0.sdk/usr/lib/に入って、コピーすると動きました。
(先のページの指示通り)
添付ドキュメント見てると、このCDの中のPackagesのなかのファイル、実は別々に入れないと入らないらしい。
でもgccは3.3が標準だから、2.95は入れなくてもいいらしい。
BSDSDKってのは名前に惹かれるけど、何するかよくわからない。
MacのMATLABでMEX関数を作ろうと思って、こんなソースを書いた。
#include "/Applications/MATLAB701/extern/include/mex.h"
void mexFunction(int out_args, mxArray *out_argv[], int in_args, mxArray *in_argv[]){
mexPrintf("Hello?\n");
}
mexでコンパイルしたらこんなエラー。
% /Applications/MATLAB701/bin/mex test.cc
ld: symbols names listed in -exported_symbols_list: /Applications/MATLAB701/extern/lib/mac/mexFunction.map not in linked objects
_mexFunction
mex: link of 'test.mexmac' failed.
関数の宣言を以下のように変えると動きました。
void mexFunction(int out_args, mxArray *out_argv[], int in_args, const mxArray *in_argv[]){
[an error occurred while processing this directive]