2024/01/30(火) [n年前の日記]
#2 [prog] SDL_image 1.2をMinGWでビルドしてみたかった
Windows10 x64 22H2 + MinGW (gcc 6.3.0) で、SDL 1.x関連のライブラリファイルをビルドできないか試してる。
SDL_mixer は smpeg のビルドで詰まってしまったので、気分転換(?)で、SDL_image 1.2.12 をビルドできないか試してみることにした。
結果を先に書いておくと、SDL_image は tiff (libtiff) のビルドで詰まってしまった…。
SDL_mixer は smpeg のビルドで詰まってしまったので、気分転換(?)で、SDL_image 1.2.12 をビルドできないか試してみることにした。
結果を先に書いておくと、SDL_image は tiff (libtiff) のビルドで詰まってしまった…。
◎ 要求されるライブラリのバージョン :
SDL_image 1.2.12 のリリース時のドキュメントに、依存してるライブラリのバージョンが書いてあった。
_SDL_image 1.2
バージョンは合わせておいたほうがいいのだろう…。
ただ、libwebp 0.1.3 だけはググっても入手できなかったので、比較的バージョンが低いものを選ぶことにした。
_SDL_image 1.2
SDL_image binaries have been built with the following libraries: JPEG v8d (jpegsr8d.zip) libpng 1.5.7 (lpng157.zip) libwebp 0.1.3 (libwebp-0.1.3.zip) tiff 4.0.0 (tiff-4.0.0.zip) zlib 1.2.5 (zlib125.zip)
バージョンは合わせておいたほうがいいのだろう…。
ただ、libwebp 0.1.3 だけはググっても入手できなかったので、比較的バージョンが低いものを選ぶことにした。
◎ ソースファイルの入手 :
必要になるソースファイルは以下。
入手先は以下。
_SDL_image - Index of /projects/SDL_image/release
_zlib - Index of /fossils
_zlib Home Site
_LIBPNG: PNG reference library - Browse /libpng15/older-releases/1.5.7 at SourceForge.net
_libpng Home Page
_jpegsrc.v8d.tar.gz - Directory Listing of /files
_libwebp - Index of downloads.webmproject.org/releases/webp
_libtiff - Index of /libtiff/old/
SDL_image-1.2.12.tar.gz zlib-1.2.5.3.tar.gz libpng-1.5.7.tar.xz jpegsrc.v8d.tar.gz libwebp-0.6.1.tar.gz tiff-4.0.0.tar.gz
入手先は以下。
_SDL_image - Index of /projects/SDL_image/release
_zlib - Index of /fossils
_zlib Home Site
_LIBPNG: PNG reference library - Browse /libpng15/older-releases/1.5.7 at SourceForge.net
_libpng Home Page
_jpegsrc.v8d.tar.gz - Directory Listing of /files
_libwebp - Index of downloads.webmproject.org/releases/webp
_libtiff - Index of /libtiff/old/
◎ ビルド作業 :
zlib, libpng, jpeg, libwebp, tiff の順番でビルドしていく。
msys.bat を実行して、MinGW を使えるようにしておく。msys.bat を実行した上で作業しないと、ビルドできたはずのものも、ビルドできなくなる…。
msys.bat を実行して、MinGW を使えるようにしておく。msys.bat を実行した上で作業しないと、ビルドできたはずのものも、ビルドできなくなる…。
◎ zlib,libpngをビルド :
zlib と libpng のビルドは以下が参考になった。ありがたや。
_zlib-1.2.7をMinGWでビルドする - 新・日々録 by TRASH BOX@Eel
_libpng-1.2.49、libpng-1.5.10をMinGWでビルドする - 新・日々録 by TRASH BOX@Eel
_zlibのコンパイル&インストール お気に入りの動画を携帯で見よう
zlib をビルド。
生成されたファイルを手作業でコピー。
libpng をビルド。
生成されたファイルを手作業でコピー。
_zlib-1.2.7をMinGWでビルドする - 新・日々録 by TRASH BOX@Eel
_libpng-1.2.49、libpng-1.5.10をMinGWでビルドする - 新・日々録 by TRASH BOX@Eel
_zlibのコンパイル&インストール お気に入りの動画を携帯で見よう
zlib をビルド。
tar zxvf zlib-1.2.5.3.tar.gz cd zlib-1.2.5.3 make -f win32/Makefile.gcc all
生成されたファイルを手作業でコピー。
- libz.a, libz.dll.a は /MinGW/lib/ へコピー。
- zconf.h, zlib.h は /MinGW/include/ へコピー。
- zlib1.dll は /MinGW/bin/ へコピー。
libpng をビルド。
cd .. tar zxvf libpng-1.5.7.tar.xz cd libpng-1.5.7 make -f scripts/makefile.gcc
生成されたファイルを手作業でコピー。
- libpng.a は /MinGW/lib/ へコピー。
- png.h, pngconf.h, pnglibconf.h は /MinGW/include/ へコピー。
- pngdebug.h, pnginfo.h, pngpriv.h, pngstruct.h も念のために /MinGW/include/ へコピーしておいた。
◎ jpegをビルド :
以下が参考になった。
_Routine-Work:/resources/doc/jpeg/install-mingw32-02.html (WebArchive)
jpeg-6b の時点では C++ に対応させるために patch を当てていたようだけど、jpeg-8d のソースを眺めたら patch を当てたものと似た感じの記述になっていたので、おそらくソースをそのまま利用できるだろうと踏んで作業した。
以下の場所にファイルがコピーされた。他にもあるかもしれないけど…。
_Routine-Work:/resources/doc/jpeg/install-mingw32-02.html (WebArchive)
jpeg-6b の時点では C++ に対応させるために patch を当てていたようだけど、jpeg-8d のソースを眺めたら patch を当てたものと似た感じの記述になっていたので、おそらくソースをそのまま利用できるだろうと踏んで作業した。
cd .. tar zxvf jpegsrc.v8d.tar.gz cd jpeg-8d ./configure --prefix=/mingw make make install
以下の場所にファイルがコピーされた。他にもあるかもしれないけど…。
/MinGW/bin/libjpeg-8.dll /MinGW/bin/cjpeg.exe /MinGW/bin/djpeg.exe /MinGW/bin/jpegtran.exe /MinGW/bin/rdjpgcom.exe /MinGW/bin/wrjpgcom.exe /MinGW/include/jconfig.h /MinGW/include/jerror.h /MinGW/include/jmorecfg.h /MinGW/include/jpeglib.h /MinGW/lib/libjpeg.a /MinGW/lib/libjpeg.dll.a /MinGW/lib/libjpeg.la
◎ libwebpのビルド :
以下を参考にして作業。
_libwebpのコンパイル&インストール お気に入りの動画を携帯で見よう
以下の場所にファイルがコピーされた。他にもあるかも。
_libwebpのコンパイル&インストール お気に入りの動画を携帯で見よう
cd .. tar zxvf libwebp-0.6.1.tar.gz cd libwebp-0.6.1 ./configure --prefix=/mingw make make install
以下の場所にファイルがコピーされた。他にもあるかも。
/MinGW/bin/libwebp-7.dll /MinGW/bin/cwebp.exe /MinGW/bin/dwebp.exe /MinGW/include/webp/decode.h /MinGW/include/webp/encode.h /MinGW/include/webp/types.h /MinGW/lib/libwebp.a /MinGW/lib/libwebp.dll.a /MinGW/lib/libwebp.la
◎ libtiffのビルド :
以下を参考にして作業。
_Routine-Work:/resources/doc/libtiff/install-mingw32-02.html (WebAechive)
make をした段階で、大量のエラーが出た。どうもリンクが上手く行ってないように見える。lib/libstdc++.a がどうとか表示されてる。
ここで手詰まり。
もしかして、gcc 6.3.0 を使っているから失敗するのだろうか。ググったところ、この時期のSDL関連ファイルのビルドには、MinGW 5.1.4 (gcc 3.4.5) を使っていた事例が多いようだし…。
_Routine-Work:/resources/doc/libtiff/install-mingw32-02.html (WebAechive)
cd .. tar zxvf tiff-4.0.0.tar.gz cd tiff-4.0.0 ./configure --prefix=/mingw make make install
make をした段階で、大量のエラーが出た。どうもリンクが上手く行ってないように見える。lib/libstdc++.a がどうとか表示されてる。
ここで手詰まり。
もしかして、gcc 6.3.0 を使っているから失敗するのだろうか。ググったところ、この時期のSDL関連ファイルのビルドには、MinGW 5.1.4 (gcc 3.4.5) を使っていた事例が多いようだし…。
◎ SDL_imageのビルド :
libtiff はビルドできなかったけど、以下のページを眺めたところ、tiff を無効にした状態で SDL_imageをビルドできなくもないらしい。試してみることにした。
_MinGW + SDL 環境の構築
一応、以下にファイルがコピーされた。
libtiffをビルドできてない点が気になるけれど…。
_MinGW + SDL 環境の構築
cd .. tar zxvf SDL_image-1.2.12.tar.gz cd SDL_image-1.2.12 ./configure --prefix=/mingw --disable-tif make make install
一応、以下にファイルがコピーされた。
/MinGW/bin/SDL_image.dll /MinGW/include/SDL/SDL_image.h /MinGW/lib/libSDL_image.a /MinGW/lib/libSDL_image.dll.a /MinGW/lib/libSDL_image.la
libtiffをビルドできてない点が気になるけれど…。
◎ tiffのバージョンを変えて試した :
tiff (libtiff) のバージョンを変えて、ビルドできるか試してみた。
_Index of /libtiff/
ただ、SDL_image 1.2.12 で、./configure --prefix=/mingw と打った際、tiff関係で警告が出ているように見えた。
これってどうなんだろう…。TIF image loading disabled って言ってるけれど…。結局、tiff が無効になってるということ?
_Index of /libtiff/
- tiff 4.0.0, 4.0.1 ... ビルド失敗
- tiff 4.0.4, 4.0.8, 4.6.0 ... ビルド成功
ただ、SDL_image 1.2.12 で、./configure --prefix=/mingw と打った際、tiff関係で警告が出ているように見えた。
checking for LIBPNG... no checking png.h usability... yes checking png.h presence... yes checking for png.h... yes checking for png_create_read_struct in -lpng... yes checking tiffio.h usability... yes checking tiffio.h presence... yes checking for tiffio.h... yes checking for TIFFClientOpen in -ltiff... no configure: WARNING: *** Unable to find Tiff library (http://www.remotesensing.org/libtiff/) configure: WARNING: TIF image loading disabled checking for LIBWEBP... yes
これってどうなんだろう…。TIF image loading disabled って言ってるけれど…。結局、tiff が無効になってるということ?
[ ツッコむ ]
以上です。