OSX LionでSDLを使いたい、それは茨の道なのかも (解決済)
お詫びと注意
この記事で使ってたサンプルプログラムにはミスがあります
http://d.hatena.ne.jp/yano-htn/20120219/1329621619
に再まとめがあるのでそっち参照
続・SDLセットアップ
どうも調べていると、OSX Lionからgccがllvmのものに入れ替わったようで、
それでちらほら問題が起きているみたい。
http://blog.fenrir-inc.com/jp/2011/07/llvm.html
せっかくなので下記のサイトを参考にbrewでgcc-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