mieki256's diary



2024/02/22(木) [n年前の日記]

#2 [prog] soil2をビルド

OpenGLで、テクスチャ画像のロードを楽にする、soli (または soil2) というライブラリがある。

_lonesock.net: SOIL (WebArchive)
_littlstar/soil: Simple OpenGL Image Library
_SpartanJ/SOIL2: SOIL2 is a tiny C library used primarily for uploading textures into OpenGL.

soil2 を Windows10 x64 22H2 + MSYS2 + mingw64 でビルドできるか試してみた。

ビルド :

README.md 通りに作業していけば問題無いけど一応メモ。

Makefile を作るために Premake なるツールが必要になる。MSYS2の場合はパッケージが用意されているのでそれをインストールすればいい。ちなみに、MSYS2 上では pacman -Ss hoge でパッケージの検索ができて、pacman -S hoge でインストールできる。
$ pacman -Ss premake

$ pacman -S mingw-w64-i686-premake mingw-w64-i686-premake4 mingw-w64-x86_64-premake mingw-w64-x86_64-premake4

git clone を使って、github から soil2 のソース一式を入手する。任意のフォルダで以下を実行。
git clone https://github.com/SpartanJ/SOIL2.git
cd SOIL2

premake5を使って、Makefile を作る。
premake5 gmake2

make/windows/ というフォルダが作成されて、その中に色んな Makefile が作成された。中に入る。
cd make/windows

makeを呼び出す際、config=xxxx と指定することで、以下の版の .dll、.lib が作れるらしい。
release_x86
release_x86_64
debug_x86
debug_x86_64

makeと打ってビルドする。MinGW64-x85_64 で作業していたので、x86_64 を選んでみた。
make config=release_x86_64

../../lib/windows/ 内に、以下の2つのファイルが生成された。
soil2.dll
soil2.lib

更に、../../bin/ 内に、以下の2つの実行サンプルも生成された。動作には SDL2 が必要らしい。
soil2-perf-test-release.exe
soil2-test-release.exe

SDL2 は、MSYS2ならパッケージで用意されているのでインストールできる。
$ pacman -Ss SDL2

$ pacman -S mingw-w64-i686-SDL2 mingw-w64-x86_64-SDL2

先ほど生成した 実行サンプルを実行してみる。色々なdllを要求されるけど、ひとまず、先ほど生成した soil2.dll を bin/ にコピー。他のdllは、MinGW64 の bin/ にパスが通っている状態なら、そちらから読み込んでくれる。
cd ../../bin/
./soil2-test-release.exe
./soil2-perf-test-release.exe
  • soil2-test-release.exe ... ウインドウが表示されて画像が描画された。
  • soil2-perf-test-release.exe ... 画像群を読み込んで、かかった時間が表示された。




ということで、Windows10 x64 22H2 + MSYS2 で soil2 をビルドすることができると分かった。

MinGW64-x86_64 (64bit版) ではなく、MinGW64-i686 (32bit版) でも試してみた。そちらも同様に動いてくれた。.dll と .lib も生成された。

実行サンプルに必要なdll :

soil2-test-release.exe が要求するdllは以下。
$ objdump -p soil2-test-release.exe | grep dll
        DLL Name: soil2.dll
        DLL Name: libgcc_s_dw2-1.dll
        DLL Name: KERNEL32.dll
        DLL Name: msvcrt.dll
        DLL Name: SDL2.dll
        DLL Name: SHELL32.dll
        DLL Name: libstdc++-6.dll

つまり、以下のdllが別途必要になる。
libgcc_s_dw2-1.dll
libstdc++-6.dll
SDL2.dll
soil2.dll

soil2.dll 以外は、msys64/mingw64/bin/ の中からコピーしてくれば良さそう。bin/ に各dllをコピーしてみたら、MSYS2等にパスが通ってない状態でも soil2-test-release.exe が実行できた。

以上です。

過去ログ表示

Prev - 2024/02 - Next
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

カテゴリで表示

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


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

Powered by hns-2.19.6, HyperNikkiSystem Project