mieki256's diary



2018/03/13(火) [n年前の日記]

#2 [windows][mruby] MSYS2でSDL2関係をビルドしたりmrubyをビルドしたり

先日、Windows10 x64 + MSYS2 で mruby をビルドした際は、エラーが出てしまってビルドできなかったのだけど。

ふと、github から最新版の mruby を clone して試していたのがマズかったのではないかと思えてきたわけで。

試しに _mruby 1.4.0 の zip をDLしてビルドしてみたところ、最後までビルドが通った。とメモ。

せっかくだから、SDL2関係も MSYS2 上でビルドできるか実験。

SDL2関係をビルドするために必要なファイルをインストール。 :

以下のページを参考にして作業。

_MSYS2/MinGW-w64 (64bit/32bit) インストール手順 メモ

  • スタートメニューから、MSYS2 MinGW 32bit (32bit)、を起動。
  • pacman -Syuu で、インストール済みのパッケージを最新版に更新。
  • pacman -S base-devel で、おそらくは開発に必要になりそうなツール群をインストール。
  • pacman -S mingw-w64-i686-toolchain で、コンパイラその他をインストール。ada や fortran や objc はインストールしなくていいと思うので、「1 2 3 7 9 10 11 12 13 14 15 16 17」みたいな感じで番号を打ち込んでインストールすることになるかと。
  • pacman -Ss SDL2 i686 で、SDL2関係のパッケージ一覧を表示。
  • pacman -S パッケージ名、で、SDL2関係のパッケージをインストール。

ところで、どうもよく分からんのだけど…。スタートメニュー内にある、以下のショートカット…。
  • 「MSYS2 MinGW 32bit (32bit)」
  • 「MSYS2 MinGW 64bit (32bit)」
  • 「MSYS2 MinGW 32bit (64bit)」
  • 「MSYS2 MinGW 64bit (64bit)」
それぞれ、どういう意味なんだろう。32bit用のバイナリを作りたいときは、どれを選べばいいの?

それはそれとして。SDL2関係のパッケージをインストールできたら、sdl2-config でバージョンを確認することができるはず。
$ sdl2-config --version
2.0.8

コンパイラやリンカに渡すオプションも確認できる。
$ sdl2-config --cflags
-I/mingw32/include/SDL2 -Dmain=SDL_main

$ sdl2-config --libs
-L/mingw32/lib -lmingw32 -lSDL2main -lSDL2 -mwindows

SDL2を使ったCソースをビルドしてみる。 :

以下を参考にして、test.c を作成。今回は、~/prg/sdl2/ 以下に、 test.c を作成した。

_Installing SDL for MinGW
#include "SDL2/SDL.h" 
#include <stdio.h>

int main( int argc, char* args[] ) 
{ 
  SDL_Window     *window;

  SDL_Init(SDL_INIT_VIDEO);

  window = SDL_CreateWindow("SDL2 Window", 100, 100, 640, 480, 0); 
  
  if(window==NULL)
  {   
    printf("Could not create window: %s\n", SDL_GetError());
    return 1;
  }
  
  SDL_Delay(3000);
  
  SDL_DestroyWindow(window); 
   
  SDL_Quit(); 

  return 0;   
}

コンパイルする。
g++ -o test.exe test.c -lmingw32 -lSDL2main -lSDL2
test.exe ができた。

MSYS2 を使う際に立ち上がる mintty 上から test.exe を実行しても何も出てこないけど、DOS窓を開いて、そこから test.exe を実行したら、ウインドウが開いて、3秒後にウインドウが閉じられた。どうやらビルドできたっぽい。

更に、以下も参考にして、ビルドできるかどうかテスト。

_MSYS2 + MinGW 環境に SDL2 をインストール - takaya030の備忘録

/mingw64 を /mingw32 に変更した Makefile を作成してから make と打ってみたけれど。「/bin/sh が無いよ」と怒られる…。何故…。which sh をしたら、/usr/bin/sh が出てきた。/bin/sh じゃないんか…。

とりあえず、MSYS2 上ならいきなり sdl2-config と打っても動作するので、Makefile 内の 「/bin/sh sdl2-config」の記述は「sdl2-config」にしてみた。この状態ならビルドも通ったし、DOS窓上で実行したらウインドウも表示された。

しかし、mintty 上から実行しようとすると、何も表示されないのは何故なんだろう…。

以上です。

過去ログ表示

Prev - 2018/03 -
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project