mieki256's diary



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_image 1.2.12 のリリース時のドキュメントに、依存してるライブラリのバージョンが書いてあった。

_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 だけはググっても入手できなかったので、比較的バージョンが低いものを選ぶことにした。

ソースファイルの入手 :

ビルド作業 :

zlib, libpng, jpeg, libwebp, tiff の順番でビルドしていく。

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 をビルド。
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 を当てたものと似た感じの記述になっていたので、おそらくソースをそのまま利用できるだろうと踏んで作業した。

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のコンパイル&インストール お気に入りの動画を携帯で見よう

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)

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 環境の構築

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/

  • 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 が無効になってるということ?

以上です。

過去ログ表示

Prev - 2024/01 - 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 30 31

カテゴリで表示

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


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

Powered by hns-2.19.6, HyperNikkiSystem Project