Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

FORGET ME NOT


備忘録

Ubuntu 14.04 で BPG をビルドする

はじめに

BPG(Better Portable Grpahics) は品質の損失なく、ファイルサイズを減らすための画像フォーマットです。以下のブログに検証されているものが詳しいです。

以下は ubuntu 14.04 においてビルド方法のメモです。

ダウンロード

公式サイトよりダウンロードします。執筆時の最新版は 0.9.5でした。

$ wget http://bellard.org/bpg/libbpg-0.9.5.tar.gz
$ tar zxvf libbpg-0.9.5.tar.gz

ビルド

g++ を使用することになるので g++ をインストールしておきます

$ sudo apt-get install g++

make を実行します。

$ cd libbpg-0.9.5
$ make
bpgdec.c:35:17: fatal error: png.h: そのようなファイルやディレクトリはありません
 #include <png.h>
                 ^
compilation terminated.

しかし、このようなエラーメッセージが出ます。ubuntu にインストールされている libpng は 1.2.49 (/usr/include/libpng12 参照) だからで、png_set_longjmp_fn が追加されたのは libpng-1.4.x からだそうです。そのため libpng の最新版を取得します。執筆時の最新版は 1.6.18 でした。

$ wget http://prdownloads.sourceforge.net/libpng/libpng-1.6.18.tar.gz
$ tar zxvf libpng-1.6.18.tar.gz
$ cd libpng-1.6.18
$ ./configure
$ make
$ sudo make install

configure で zlib not found とエラーが出るならば、zlib1g-dev をインストールする必要があります。

$ sudo apt-get install zlib1g-dev

インストールされるとヘッダとライブラリは /usr/local/include , /usr/local/lib にそれぞれインストールされます。コンパイラが参照できるよう環境変数を設定します。

export CPLUS_INCLUDE_PATH=/usr/local/include
export LD_LIBRARY_PATH=/usr/local/lib
export LIBRARY_PATH=/usr/local/lib

libbpg-0.9.5 のディレクトリに戻り、ビルドを実行します。

bpgenc.c:33:21: fatal error: jpeglib.h: そのようなファイルやディレクトリはありません
 #include <jpeglib.h>
                     ^
compilation terminated.

まずは libjpeg がインストールされていない場合、このエラーが出力されます。

$ sudo apt-get install libjpeg-dev

libjpeg-dev をインストールし、make を実行すると

bpgview.c:33:21: fatal error: SDL/SDL.h: そのようなファイルやディレクトリはありません
 #include <SDL/SDL.h>
                     ^
compilation terminated.

これは何でしょう。Deb系パッケージ管理システムには、特定のファイルがどのパッケージ含まれているか調べる apt-file というツールがあります。これで調べてみます。インストールした後、最新の情報に更新する必要があります。

$ sudo apt-get install apt-file
$ sudo apt-file update
$ apt-file search SDL/SDL.h
emscripten: /usr/share/emscripten/system/include/SDL/SDL.h
libsdl1.2-dev: /usr/include/SDL/SDL.h

どうも libsdl1.2-dev のようなのでこれをインストールします。

```
$ sudo apt-get install libsdl1.2-dev
```

make を続行します。

bpgview.c:34:27: fatal error: SDL/SDL_image.h: そのようなファイルやディレクトリはありません
 #include <SDL/SDL_image.h>
                           ^
compilation terminated.

再び apt-file で調べます。

$ apt-file search SDL/SDL_image.h
emscripten: /usr/share/emscripten/system/include/SDL/SDL_image.h
libsdl-image1.2-dev: /usr/include/SDL/SDL_image.h

libsdl-image1.2-dev が必要のようなのでインストールします。

$ sudo apt-get install libsdl-image1.2-dev

これでビルドできるかと思います。

$ make
$ sudo make install

Discussions

comments powered by Disqus