DirectFBでARM環境をグラフィカル表示~その①
DirectFBとは
DirectFBは、Direct Frame Bufferという意味で、組込みLinuxでの利用を前提に開発されたフレームバッファを利用したグラフィカル表示を行う為のライブラリ群。
単純なグラフィカルライブラリではなく、入力デバイスの管理やウィンドウシステムなどもサポートしているらしい。
デジタルテレビのGUI環境のライブラリとしても使用されていたらしい。今も使われているのだろうか?
必要なライブラリ
DirectFBをクロスコンパイルする上で必要なライブラリのソースコードをダウンロードする。
■libjpeg wget http://www.ijg.org/files/jpegsrc.v9.tar.gz ■zlib wget http://zlib.net/zlib-1.2.8.tar.gz ■libpng wget http://prdownloads.sourceforge.net/libpng/libpng-1.2.50.tar.gz ■freetype wget http://downloads.sourceforge.net/freetype/freetype-2.4.11.tar.bz2 ■DirectFB wget http://directfb.org/downloads/Core/DirectFB-1.4/DirectFB-1.4.1.tar.gz
環境変数の設定
クロスコンパイラへのパスなどの環境変数を設定する。
自分の環境では以下のように設定
export CROSS=${クロスコンパイラのルートフォルダ} export TARGET=arm-unknown-linux-gnueabi export SYSROOT=$CROSS/$TARGET/sysroot export PAHT=$PATH:$CROSS/bin
zlibのクロスコンパイル
$tar xvfz zlib-1.2.8.tar.gz $cd zlib-1.2.8 $CC=$TARGET-gcc ./configure --shared --prefix=$SYSROOT/usr $make $make install
libpngのクロスコンパイル
新しめのlibpng-1.6.1を利用しようとしたが、これを使うとDirectFBのコンパイルが上手くいかないので、とりあえず古めのソースを落としてきた。
$tar xvfz libpng-1.2.50.tar.gz $cd libpng-1.2.50 $CC=$TARGET-gcc ./configure --host=$TARGET --prefix=$SYSROOT/usr $make $make install
libjpegのクロスコンパイル
$tar xvfz jpegsrc.v9.tar.gz $cd jpegsrc-9 $CC=$TARGET-gcc ./configure --host=$TARGET --prefix=$SYSROOT/usr $make $make install
freetypeのクロスコンパイル
$tar jxvf freetype-2.4.11.tar.bz2 $cd freetype-2.4.11 $CC=$TARGET-gcc ./configure --host=$TARGET --prefix=$SYSROOT/usr $make $make install
DirectFBのクロスコンパイル
いよいよ本体のクロスコンパイル。
ただ、ちょっとだけソースの修正が必要
$tar xvfz DirectFB-1.4.1.tar.gz $cd DirectFB-1.4.1
gfxdrivers/davinci/davinci_c64x.cを開き、下記include文を適当な位置に追加
#include <sys/stat.h>
後はコンパイルを実行
$CC=$TARGET-gcc \ FREETYPE_CFLAGS="-I$SYSROOT/usr/include/freetype2" \ FREETYPE_LIBS="-lfreetype" \ ./configure \ --host=$TARGET \ --prefix=$SYSROOT/usr \ --enable-shared \ --disable-x11 \ --disable-libtool-lock $make $make install
$SYSROOT/usr/libの配下に「libdirectfb・・・」というライブラリができていればOK。
次回は、このライブラリを利用したプログラムを作成して、QEMU上で動かしてみます。