aclib #7 - SDL2.0版のインストール(Windows, MinGW-5.1.6, 32bit用)
(1) はじめに
- ここで紹介する方法は、Windows上でMinGW-5.1.6(32bit)とSDL2.0を利用した方法です。
- このやり方だと64bit対応アプリは作れませんが、32bitアプリは64bit版のWindowsでも問題なく動作するため、基本的には問題になりません。
- 64bit版の開発環境を構築するのももちろん可能ですが、32bit版のWindowsを使っている人には適用できない説明になってしまうので、ここでは32bit版で説明します。
- 自力で64bit版のMinGWをインストールして、あとは以下を適宜読み替えれば、難なく64bit版の開発環境を構築できるでしょう。
(2) MinGW-5.1.6のダウンロード&インストール
- http://k.osask.jp/files/MinGW516.exe (155KB) をダウンロードして適当なフォルダ上で実行してください。
- 実行するとカレントディレクトリに作業用ファイルをたくさん作るので、そういうことをされても困らない場所においてから実行しましょう。
- 実行して順当に進んでいくと「Download and install」か「Download only」かを選ぶ画面になります。ここでは「Download and install」を選びます。
- さらに進んでいくと「Previous」「Current」「Candidate」のどれかを選択する画面になりますが、そこは「Current」でいいと思います。
- そしてインストール構成を選ぶ画面になります。ここは「Minimal」を選べば十分です。他にもほしいものがあるのなら追加してもいいですよ。Minimalだとインストール容量は50MB程度になるはずです。
- そしてインストールするディレクトリを聞かれます。ここも好きにしていいですが、とりあえず以下ではデフォルト通り「C:¥MinGW」を指定したものとして話を進めます。
- あとはまあ適当にやっていればインストールは終わるでしょう。
(3) SDL2.0ライブラリのダウンロード&インストール
- https://www.libsdl.org/ に行って「Download / SDL Releases」に進んで、「Development Libraries:」の「Windows:」を見てください。そこにきっと、「SDL2-devel-2.0.12-mingw.tar.gz」というのがあるはずです。
- (もっと新しいバージョンになっているかもしれません。その場合は新しいものでOKです。)
- そしてこれをどうにかして解凍しなければいけません。どんなツールでもいいですので解凍してください。ちなみに私は「圧縮・解凍ソフト 7-Zip」を使いました。
- 解凍すると、「i686-w64-mingw32」というフォルダが手に入ります。以下ではそれを「c:¥sdl¥i686-w64-mingw32」に置いたとして話を進めます。
- これでSDL2.0のインストールも終わりです。
(4) aclライブラリのダウンロード&インストール
- 以下をダウンロードします。
- このアーカイブを展開し、中のacl_sdl2フォルダを得て、適当なところにその acl_sdl2 フォルダを置きます(中のsampleは以下のテストが終わったら削除しても問題ありません)。
- まあでも説明の便宜上、以下では「c:¥acl_sdl2」に置いたとして話を進めます。
- これでインストールは完了です。
(5) aclライブラリのテストとアプリのコンパイル手順
- まず、「c:/sdl/i686-w64-mingw32/bin」の「SDL2.DLL」をacl_sdl2フォルダの中のsampleフォルダの中へコピーしておいてください(これがなくてもコンパイル&リンクはできますが、実行ができません)。
- 次に、コマンドプロンプトを開いて、acl_sdl2フォルダの中のsampleフォルダの中へカレントディレクトリを移動してください(cdコマンドで)。
- そこで以下のように入力します。gccのコマンドラインオプションは順番に敏感なので気を付けてください(厳密はリンカオプションが順番に敏感)。
prompt>c:\MinGW\bin\gcc.exe -m32 -Wl,-s -Wno-unused-function -Os -I C:\sdl\i686-w64-mingw32\include -I c:\acl_sdl2 grd.c -o grd.exe -DAARCH_X86 -lmingw32 c:\sdl\i686-w64-mingw32\lib\libSDL2main.a c:\sdl\i686-w64-mingw32\lib\libSDL2.dll.a -luser32 -lgdi32 -lshell32
- 長いですね・・・。これを毎回入力するのは苦痛でしょうから、以下のバッチファイルを作っておくといいと思います。
c:\MinGW\bin\gcc.exe -m32 -Wl,-s -Wno-unused-function -Os -I C:\sdl\i686-w64-mingw32\include -I c:\acl_sdl2 %1.c -o %1.exe -DAARCH_X86 %2 %3 %4 %5 %6 %7 %8 %9 -lmingw32 c:\sdl\i686-w64-mingw32\lib\libSDL2main.a c:\sdl\i686-w64-mingw32\lib\libSDL2.dll.a -luser32 -lgdi32 -lshell32
- これを「ccacl.bat」で保存したとして以下では説明します。
- このccacl.batがあれば、
prompt>ccacl grd
- だけでコンパイルとリンクができるようになります。
- 無事に実行ファイルができたら、
promp>grd
- で実行してみてください。美しいグラデーションが出るはずです。
- 他にも
prompt>ccacl mandel
prompt>ccacl kcube
prompt>ccacl invader
- でコンパイル&リンクができますので、実行してみてください。無事に動けばテストは完了です!
こめんと欄
- こんにちわ。acl.cはどこに置けばいいのでしょうか?grd.cの#include<>を""に書き換えて、sampleフォルダの中にdrd.cを入れてコンパイルしています。こうしないと”acl.c: No such file or directory"と表示されてコンパイルができません。よろしかったら教えて下さい、よろしくお願いします。 -- M1号 2020-09-18 (金) 09:24:24
- #includeを書き換えずに、Cコンパイラに対して、-Iオプションでインクルードディレクトリを追加できないでしょうか?alc.cなどが入っているディレクトリをインクルードディレクトリに追加するのです。 -- K 2020-09-18 (金) 09:38:22
- Kさん、ありがとうございました。解決しました。-Iオプションのc:\ac100c_sdlをc:\ac100c_sdl2に変更してインクルードディレクトリを追加できました。 -- M1号 2020-09-18 (金) 10:00:52
- おお、私のミスまで見つけてくれてありがとうございます! -- K 2020-09-18 (金) 10:06:52
|