OSX LionでSDLを使いたい、それは茨の道なのかも (解決済)

お詫びと注意

この記事で使ってたサンプルプログラムにはミスがあります
http://d.hatena.ne.jp/yano-htn/20120219/1329621619
に再まとめがあるのでそっち参照

続・SDLセットアップ

どうも調べていると、OSX Lionからgccllvmのものに入れ替わったようで、
それでちらほら問題が起きているみたい。
http://blog.fenrir-inc.com/jp/2011/07/llvm.html

せっかくなので下記のサイトを参考にbrewgcc-4.6でも入れてみる
http://d.hatena.ne.jp/pepshiso/20110925/1316966722
http://d.hatena.ne.jp/rhysd/20111104/1320433272

gcc-4.6のインストール

github上の設定ファイルを利用してbrew経由でgccをインストールする

$ brew install https://raw.github.com/adamv/homebrew-alt/master/duplicates/gcc.rb --enable-all-languages
エラー (メモに取っておくの忘れた)

コケた\(^o^)/
llvmがどうも信用ならないので、先にapple-gcc4.2を入れる
# もしかしたら関連ライブラリのlinkに失敗してたのが直接の原因かも
http://apple.stackexchange.com/questions/38222/how-do-i-install-gcc-via-homebrew

$ brew install https://raw.github.com/adamv/homebrew-alt/master/duplicates/apple-gcc42.rb
# brew link apple-gcc42

んで、以下のコマンドで再チャレンジ
一つ一つ依存関係のあるものを順番に入れた
# gccのインストールだけrootでやれば万事解決かも

$ brew install gmp
# brew link gmp
$ brew install mpfr
# brew link mpfr
$ brew install libmpc
# brew link libmpc
$ HOMEBREW_USE_GCC=1 brew install https://raw.github.com/adamv/homebrew-alt/master/duplicates/gcc.rb --enable-all-languages
# brew link gcc

SDLの再インストール

x86_64うんたらエラーについて調べてたら以下のような記事があった
http://stackoverflow.com/questions/8136857/libsdl-cmake-and-mac-os-x-lion

どうやらアセンブリコードを使わずに自前で全ビルドすればいいみたい
やってみる、あと、READMEのインストールをもっと真面目に読むことにする

あと、同じ問題に対処してる記事が見つかった
http://denrinken.tsbps.com/view.cgi?article=2011-9-23a

というわけでまずはSDLから入れなおす
まずはconfigure

$ ./configure --disable-assembly CC=gcc-4.6 CXX=g++-4.6

このままビルドすると"-fpascal-strings"のflagsでコケるので、
MakefileのEXTRA_CFLAGSからあらかじめ削除しておく
# gcc-4.6ではこのオプションはない?

$ make
# make install

あれーまだコケるよ。

しかたないので古いけど安心感のあるapple-gcc42でビルドする。

$ ./configure --disable-assembly CC=gcc-4.2 CXX=g++-4.2
$ make
# make install

で、以前に実行に失敗したテストプログラムをコンパイル

$ g++ `sdl-config --cflags` show_window.cpp `sdl-config --libs`
Undefined symbols for architecture x86_64:
"finalize()", referenced from:
SDL_main(int, char***)in ccIN7frZ.o
"_SDL_main", referenced from:
-[SDLMain applicationDidFinishLaunching:] in ccH82tCi.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status

だめぽ、うーん、まったくわからんねorz