インストール: libjpeg | JPEGの基本ライブラリー
JPEGの基本ライブラリーであるlibjpegをソースコードからインストールする。
libGD内で使われており,PHPからjpeg関係の操作をする際に必要になったので,インストールした。
| 項目 | 説明 |
|---|---|
| 配布元 | Independent JPEG Group |
| リポジトリー | |
| 手順 | ijg/install.txt at master · libjpeg-turbo/ijg |
| 依存情報 | ijg/install.txt at master · libjpeg-turbo/ijg |
| 依存先 (必須) | Make (GNU Make) |
| 依存先 (任意) | |
| 依存元 | libGD |
sh -eux <<-"EOT"
PKG=libjpeg VER=9c TAG=${PKG#lib}-$VER PKG_VER=$PKG${VER:+-$VER}
LOCAL=~/.local J=$(grep -cs '^processor' /proc/cpuinfo || echo 2)
mkdir -p "$LOCAL/src"
cd "$LOCAL/src"
if command -v git >/dev/null; then
[ -e $PKG ] || git clone --depth 1 git://github.com/libjpeg-turbo/ijg $PKG
cd $PKG
git fetch --depth 1 ${TAG:+origin tag $TAG}
git checkout -f ${TAG:-master}
else
[ -e $PKG_VER ] || wget http://www.ijg.org/files/${PKG#lib}src.v$VER.tar.gz
tar -xf $PKG_VER.*
cd $PKG_VER
fi
make -kj $J distclean clean || :
[ ! -e configure ] && [ -e configure.ac ] && autoreconf -is
[ -x configure ] && ./configure --prefix="$LOCAL/stow/$PKG_VER"
make -j $J
make -j $J check
make -j $J install
cd "$LOCAL/stow"
echo $PKG${VER:+-}[0-9]* | xargs -n 1 stow --ignore=dir -D
stow --ignore=dir $PKG_VER
EOT
| 日付 | バージョン | OS | 依存関係 |
|---|---|---|---|
| 2020-02-07 | 9c | Ubuntu 18.04 | GNU Make 4.2.1, GCC 7.4.0 |
2020-02-07時点での最新版は2020-01-12に公開された9dなのだが,GitHubのミラーリポジトリーの最新版が9cだったので,9cをインストールした。
当初のビルドではmake checkで以下のエラーが出てしまった。
make check-local make[1]: Entering directory '/home/senooken/.local/src/libjpeg' rm -f testout* ./djpeg -dct int -ppm -outfile testout.ppm ./testorig.jpg Unsupported output file format make[1]: *** [Makefile:1226: check-local] Error 1
PPMの出力に対応できていないようだ。調べたところjconfig.cfg~に#define PPM_SUPPORTEDの定義があり,jconfig.txtを見ろとある。jconfig.hにコンパイル用のマクロが定義されている。
ビルドの過程でjconfig.cfgが修正されて,#define PPM_SUPPORTEDが削除されたのが原因のようだ。
通常,リポジトリーからチェックアウトした場合,autoreconf -isなどで,configure.acから自前でconfigureを作成する必要がある。ただし,libjpegの場合,configureがあらかじめ用意されていた。autoreconf -isを実行したのがまずかったようだ。
以下のようにビルド手順を見直して,configureが不在,かつconfigure.acが存在する場合にautoreconf -isを実行するようにした。つまり,今回はautoreconfを実行しないようにした。
[ ! -e configure ] && [ -e configure.ac ] && autoreconf -isこれで問題なくビルドできた。
