MacOSのgccで共有ライブラリを作る
MacOSのgccで共有ライブラリをビルドしたら、何故かエラーになった。
% gcc -c -fPIC -o xxx.o xxx.c % gcc -shared -o libxxx.so xxx.c Undefined symbols: "_main", referenced from: start in crt1.10.5.o ld: symbol(s) not found collect2: ld returned 1 exit status
調べてみると、
OSXはNextStepの流れから(?)、共有ライブラリが.bundle(例外もありそう)となっていて、gcc -sharedがoptionとして存在してない。
http://d.hatena.ne.jp/ma_ko/20070311
だそうだ。
マニュアルを見てみると、(APPLE ONLY)という文字があちこちに見られる。
で、解決策としては、-bundleオプションか、-dynamiclibオプションを使えば良さそうかなと。両者の違いとかわかんないけど、とりあえずビルドできた。
% gcc -c -fPIC -o xxx.o xxx.c % gcc -dynamiclib -o libxxx.so xxx.o