keropoの備忘録

しらべたことをメモるブログ

DirectFBでARM環境をグラフィカル表示~その①

はじめに

DirectFBを利用して、QEMUでグラフィカルな画面を表示してみる。
今回は、DirectFBを動かす上で必要なライブラリをクロスコンパイルする手順をメモ。

DirectFBとは

DirectFBは、Direct Frame Bufferという意味で、組込みLinuxでの利用を前提に開発されたフレームバッファを利用したグラフィカル表示を行う為のライブラリ群。
単純なグラフィカルライブラリではなく、入力デバイスの管理やウィンドウシステムなどもサポートしているらしい。
デジタルテレビのGUI環境のライブラリとしても使用されていたらしい。今も使われているのだろうか?

環境変数の設定

ロスコンパイラへのパスなどの環境変数を設定する。
自分の環境では以下のように設定

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上で動かしてみます。