Mozilla JPEG Encoder Project (mozjpeg) は、libjpeg-turboをベースとした高効率なJPEG圧縮ライブラリです。本レポートは、WSL2環境でmozjpegをソースコードからビルドする際の手順と必要な依存関係について説明します。
- OS: Ubuntu 20.04.6 LTS (focal)
- カーネル: 5.15.153.1-microsoft-standard-WSL2
- アーキテクチャ: x86_64
mozjpegをビルドするために以下のパッケージが必要です:
sudo apt update
sudo apt install cmake gcc nasm libpng-dev zlib1g-dev build-essential| パッケージ | バージョン | 説明 |
|---|---|---|
| cmake | 3.16.3-1ubuntu1.20.04.1 | クロスプラットフォーム・ビルドシステム |
| gcc | 4:9.3.0-1ubuntu2 | GNU C コンパイラ |
| nasm | 2.14.02-1 | x86アセンブラ(SIMD最適化に必要) |
| libpng-dev | 1.6.37-2 | PNG画像ライブラリ(開発用ヘッダー) |
| zlib1g-dev | 1:1.2.11.dfsg-2ubuntu1.5 | 圧縮ライブラリ(開発用ヘッダー) |
| build-essential | 12.8ubuntu1.1 | ビルドツール群 |
- NASM: x86_64 SIMD拡張機能を使用するために必要です。mozjpegの高速化に重要な役割を果たします。
- libpng-dev: PNG画像の読み込みサポートを有効化します。
- zlib1g-dev: 圧縮処理に必要なライブラリです。
# mozjpegソースコードがすでに存在する場合
cd /path/to/mozjpegmkdir -p build
cd buildcmake -G"Unix Makefiles" -DCMAKE_C_FLAGS="-fPIC" ..重要: -fPICフラグは共有ライブラリを正しく生成するために必要です。このフラグを指定しない場合、リンクエラーが発生します。
makemake isntall
echo "export PATH=/opt/mozjpeg/bin:$PATH" >> ~/.bashrc実際のビルド設定では以下の構成が使用されます:
- ビルドタイプ: Release
- バージョン: 5.0.0
- アーキテクチャ: 64-bit (x86_64)
- インストールプレフィックス:
/opt/mozjpeg - 共有ライブラリ: 有効 (BUILD_SHARED_LIBS = 1)
- 算術符号化: 無効 (WITH_ARITH_DEC = 0, WITH_ARITH_ENC = 0)
- TurboJPEG API: 有効 (WITH_TURBOJPEG = 1)
- Java ラッパー: 無効 (WITH_JAVA = 0)
- libjpeg互換性: v6.2 API/ABI
ビルドが成功すると、以下のファイルが生成されます:
cjpeg: JPEG エンコーダーdjpeg: JPEG デコーダーjpegtran: JPEG 変換ツールrdjpgcom: JPEG コメント読み取りツールwrjpgcom: JPEG コメント書き込みツール
libjpeg.so.62.4.0: libjpeg互換共有ライブラリlibturbojpeg.so.0.3.0: TurboJPEG API共有ライブラリ
tjbench: TurboJPEG ベンチマークツールtjexample: TurboJPEG サンプルtjunittest: TurboJPEG ユニットテスト
エラー: relocation R_X86_64_TPOFF32 against 'simd_support' can not be used when making a shared object
解決方法: CMakeの設定時に-fPICフラグを指定する:
cmake -G"Unix Makefiles" -DCMAKE_C_FLAGS="-fPIC" ..警告: warning: Unknown section attribute 'note' ignored
説明: これは.note.gnu.propertyセクションに関する警告で、機能に影響はありません。
エラー: パッケージが見つからない
解決方法: パッケージリストを更新してから再インストール:
sudo apt update
sudo apt install cmake gcc nasm libpng-dev zlib1g-dev build-essentialビルドが成功したら、以下のコマンドで動作確認を行います:
# バージョン確認
./cjpeg -version
# 依存関係確認
ldd ./cjpeg期待される出力:
mozjpeg version 5.0.0 (build 20250709)
- mozjpegは完全にlibjpegと互換性があり、既存のアプリケーションにドロップイン置換として使用できます
- SIMD最適化により、標準のlibjpegよりも高速な処理が可能です
- Progressive JPEGとTrellis量子化により、より効率的な圧縮が実現されます
作成日: 2025-01-09
対象環境: WSL2 (Ubuntu 20.04.6 LTS)
mozjpegバージョン: 5.0.0