Windowsでmozjpegをソースからビルドする

mozjpegでJPEGを一括縮小するバッチファイル」を投稿したときにはmozjpegのWindows版バイナリを配布しているサイトがあったので、そこを紹介して終わりにしていたのですが、2018年11月15日の時点で確認したらサイトに繋がらなくなっていたので、コリャあかんと自前でmozjpegをビルドしました。

この機会に自分でもやってみたいという奇特な人がいるかも知れないのでメモを残しておきます。

mozjpegのソースをダウンロードして解凍する

配布元:https://github.com/mozilla/mozjpeg

ページ下部に Latest release があるハズなので、そこから最新のソースをDLします。

記事執筆時点では v3.3.1 (mozjpeg-3.3.1.zip) でした。

わかりやすく、c:\mozjpeg-3.3.1 に解凍したとして話を進めます。

Windowsでコンパイルできる環境を整える

VisualStudioをインストールしても良いんですけど、プログラマーでもない限り、あの大きな開発環境は邪魔かなぁ、ということで、mingw-w64を使うパターンです。

NASMをDLして解凍する

配布元:https://www.nasm.us/

記事執筆時点では NASM 2.14 が安定バージョンでしたので nasm-2.14-win64.zip を解凍し、わかりやすく c:\nasm に置きました。システム環境変数PATHにも c:\nasm を追加します。

CMakeをインストールする

配布元:https://cmake.org/download/

記事執筆時点では CMake 3.13.0-rc3 が最新でした。インストーラータイプのmsiと、実行モジュールだけのZIPがありますが、好みのほうで構いません。

インストーラーのほうだとウィザードで指定すれば環境変数を書き換えてくれるので、ぼくはインストーラーを選びました。

CMakeのセットアップウィザードの流れはこんな感じです。

  1. CMakeのセットアップウィザードを起動。
    CMakeのインストール1
  2. CMakeのEULAに同意します。
    CMakeのインストール2
  3. パスを通すか聞かれるので、真ん中を選びシステム環境変数のPATHにCMakeを入れます。
    CMakeのインストール3
  4. インストールパスはどこでもOKです。
    CMakeのインストール4
  5. インストールの準備が整ったと言われるので[Install]ボタンをクリックでインストールを開始します。途中、UACが有効の場合は警告ダイアログが出るので予期に計らう感じで。
    CMakeのインストール5
  6. 無事インストールが終われば下記ダイアログが表示されます。
    CMakeのインストール6

mingw-w64をインストールする

配布元:https://mingw-w64.org/doku.php/download/mingw-builds

Installation: Sourceforge の部分がDL先のリンクになっています。

mingw-w64-install.exe がDLできるので、そのまま実行してください。

  1. mingwのセットアップウィザードが起動します。
    mingw-w64のインストール1
  2. Versionは最新、Architectureはx86_64を選びます。するとExceptionは勝手にsehに変わると思うのでそのままでOK。
    mingw-w64のインストール2
  3. インストール場所ですが、後でPATHを通す必要があるので c:\mingw とかわかりやすいパスにしておくと良いでしょう。
    mingw-w64のインストール3
  4. 必要事項の入力が終わったのでインストールがはじまります。
    mingw-w64のインストール4
  5. 無事完了。
    mingw-w64のインストール5
  6. システム環境変数のPATHに C:\mingw\mingw64\bin を追加しておきます。
    mingw-w64のPATH設定

mozjpegをビルドする

Windowsでmozjpegをビルドする環境が整ったので、いよいよビルドしていきます。

コマンドプロンプトを開き、パスが通っていることを確認

Microsoft Windows [Version 10.0.17134.407]
(c) 2018 Microsoft Corporation. All rights reserved.

C:\>nasm -version
NASM version 2.14 compiled on Nov  7 2018

C:\>cmake -version
cmake version 3.13.0-rc3

CMake suite maintained and supported by Kitware (kitware.com/cmake).

C:\>mingw32-make --version
GNU Make 4.2.1
Built for x86_64-w64-mingw32
Copyright (C) 1988-2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

ビルド用のディレクトリを作り、移動する

C:\>mkdir build
C:\>cd build
C:\build>

cmakeを実行する

C:\build>cmake -G "MinGW Makefiles" C:\mozjpeg-3.3.1

※C:\mozjpeg-3.3.1 はmozjpegのソースを解凍したディレクトリ名を指定してください。

実行結果がずらずらと表示されます。

-- The C compiler identification is GNU 8.1.0
-- Check for working C compiler: C:/mingw/mingw64/bin/gcc.exe
-- Check for working C compiler: C:/mingw/mingw64/bin/gcc.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- CMAKE_BUILD_TYPE = Release
-- VERSION = 3.3.1, BUILD = 20181115
-- Arithmetic encoding support enabled
-- Arithmetic decoding support enabled
-- TurboJPEG C wrapper enabled
-- TurboJPEG Java wrapper disabled
-- In-memory source/destination managers enabled
-- 64-bit build
-- Install directory = c:/mozjpeg-gcc64
-- Compiler flags =  -O3 -DNDEBUG
-- Linker flags =
-- NASM = C:/nasm/nasm.exe
-- Building x86_64 SIMD extensions
-- Configuring done
-- Generating done
-- Build files have been written to: C:/build

mingw32-makeを実行する

C:\build>mingw32-make

[0%]~[100%]になるまでずらずら~っとスクロールが続きますので、ビルド完了までのんびり待ちましょう。

実行完了したら、c:\build に cjpeg-static.exe や jpegtran-static.exe がビルドされているハズです。

まとめ

  • mozjpegのソースをDLする
  • NASMをインストールする
  • CMakeをインストールする
  • mingw-w64をインストールする
  • cmakeとmingw32-makeを実行してビルドする

という感じで箇条書きにするとけっこうシンプルですね。

mozjpegのWindows版バイナリ置いておきます

上記手順でビルドした mozjpeg のバイナリを一応アップしておきました。

https://blog.ver001.com/download/mozjpeg-3.3.1-win64.zip

中身は以下のとおりです。

  • cjpeg.exe
  • cjpeg-static.exe
  • jpegtran.exe
  • jpegtran-static.exe
  • libjpeg-62.dll

mozjpeg-maser.zip のほうをビルドしたため、-staticなしのDLL使うバージョンもあります。

adsbygoogle

フォロー