7.20.2008

coLinux + Debian + MinGW + SDL のクロスコンパイル環境を構築

これまでに、OpenGLが扱える環境を構築してきたので、こんどはそこにSDLの使える環境を追加するという、変態的環境構築。

相変わらず、こちらを参考にさせていただく。

まずはDirectX-develなパッケージをもってきてインストール。
http://www.libsdl.org/extras/win32/common/
インストールとはいっても、/usr/i586-~/include と 同lib/に、展開したパッケージのinclude/以下およびlib/以下をコピーするだけ。
これで、DirectX+SDLなプログラムを、Debian上でコンパイルすることが可能になる。

次に、SDLをとってくる。
SDLオフィシャルサイト
執筆時点では1.2.13が最新安定板だった。

ここで間違っちゃいけないのが、ソースコードをとってきたり、Linux向けdevelパッケージをとってこないこと。
(実はソースなら、Makefileをいじることで対応できなくはないが、めんどいので出来合いのものを使う。)

必要なのはDevelopment Libraries:のWin32項目にある、SDL-devel-1.2.13-mingw32.tar.gzというパッケージ。
なぜなら、コンパイルはLinux上でするけれど、動かすのはWindows上だから。
(VC用のパッケージは、ライブラリの形式が違うから使えないので、そちらも注意。)

ここからとってきたら、tarでSDL-devel-1.2.13-mingw32.tar.gzを展開する。
開くといろいろ出てくるけど、必要なのはinclude/以下のSDLディレクトリとその中に含まれるファイルと、lib/ディレクトリ以下のライブラリのみ。

これを、OpenGLの回よろしく、/usr/i586-~/include/ と /usr/i586-~/lib/ 以下にコピーする。
includeファイルに関しては、SDLディレクトリの中身をぶちまけないことがポイント。

ここまで出来たら準備はOK。
http://lazyfoo.net/SDL_tutorials/lesson02/index.php
のチュートリアルを参考に、テストコードを書く。

よくSDLのサイトで引き合いに出されるtestディレクトリ以下のテストコードは、変態環境においてはあまりあてにならないので注意。

コードが書けた(あるいはダウンロードしてきた)ら、それをコンパイルする。
コンパイルのためのコマンドは、(ここまででmingw-c++をMinGWのC++コンパイラに対するリンクとして定義しているはずなので)
$ mingw-c++ filename -lmingw32 -lSDLmain -lSDL -mwindows
を使う。
コンパイルオプションの指定順序を間違うと、WinMain16@が見つからねーよ!というエラーに遭遇するので注意。(ただし、-lSDLmain と -lSDLの順序は逆でもよさげ)

例によって、これを適当なスクリプトに落して、/home/username/binあたりに保存しておくと使いやすくなる。

これでコンパイルができたら、Windowsに出来上がったファイルをコピーする。
Windows上ではこのプログラムの実行にSDL.dllが必要なので、どこかから落としておくか、さっき落としてきたDevLibに含まれているものを、Windows上に送っておく。

うまくいけば、チュートリアルサイトで示されているような画面が、2秒間表示されるはず。
ここまでいけば、一応うまくいっているといえるんじゃないかと思う。

#追記:画像があったほうがわかりやすいかと思ったのでアップ。
うまくいくと、↓のような画面が2秒間表示されるハズ。



わー。うまくいった。ハッピーハッピー。

0 件のコメント: