目前把directFB移植到了s3c2440上,directfb已经可以在2440上run起来,能够显示JPEG和PNG图片。以下把步骤写下来:
#Step1 install pkg-config
1. remove old version pkg-config
2. install version0.2 pkg-config
./configure --prefix=/usr/local
make
make install
#Step2
export PREFIX=/tmp/graphics/arm
export LD_LIBRARY_PATH=$PREFIX/lib
export PKG_CONFIG_PATH=$LD_LIBRARY_PATH/pkgconfig
export COMPILER=arm-linux-gcc
#This use arm gcc-2.95.3
export HOST=arm-linux
export BUILD=i386-linux
#Step3 INSTALL LIBC
CC=$COMPILER ./configure --build=$BUILD --host=$HOST --prefix=$PREFIX glib_cv_uscore=no ac_cv_func_posix_getpwuid_r=yes glib_cv_stack_grows=no
#glib_cv_uscore ac_cv_func_posix_getpwuid_r must be set when cross-compile, otherwise configure will error
#Modify config.h, add
#ifndef SSIZE_MAX
#define SSIZE_MAX 0x7fffffff
#endif
#If occue glib_genmarshal error, Must modify file gobject/Makefile tests/gobject/Makefile
#Modify
glib_genmarshal = $(GLIB_GENMARSHAL)
#as:
LD_LIBRARY_PATH=/"//";
export LD_LIBRARY_PATH;
glib_genmarshal = $(GLIB_GENMARSHAL)
LD_LIBRARY_PATH=/"/home/tinix/tools/GTK/DFB-DESKTOP/DirectFB-Related/install-dir/gtkdfb/usr/local/lib/";
export LD_LIBRARY_PATH;
make
make install
#Step4 Freetype
CC=$COMPILER ./configure --host=$HOST --build=$BUILD --prefix=$PREFIX
make
make install
#Step5 xml
CC=$COMPILER ./configure --host=$HOST --build=$BUILD --prefix=$PREFIX --without-debug
#add PATH_MAX in file testModule.c
#define PATH_MAX 20
make
make install
#Step6 Fontconfig
CC=$COMPILER ./configure --build=$BUILD --host=$HOST /
--prefix=$PREFIX /
--with-freetype-config=$PREFIX/bin/freetype-config --enable-libxml2 --with-arch=arm
make
make install
#Step7 zlib
CC=$COMPILER ./configure --prefix=$PREFIX --shared
make
make install
#Step8 libpng
CC=$COMPILER ./configure --host=$HOST --build=$BUILD --prefix=$PREFIX ac_cv_lib_z_zlibVersion=yes CFLAGS=-I$PREFIX/include
#Modify Makefile
#Modify
LIBS = -lz -lm
#as
LIBS = -lm
make
make install
#Step9 JPEG
CC=$COMPILER ./configure --host=$HOST --build=$BUILD --prefix=$PREFIX
make
make install
make install-lib
#Step9 Directfb
CC=$COMPILER
PKG_CONFIG=/usr/local/bin/pkg-config
FREETYPE_CFLAGS=-I$PREFIX/include/freetype2
FREETYPE_CONFIG=$PREFIX/bin/freetype-config
FREETYPE_LIBS=-L$PREFIX/lib -Wl,--rpath -Wl,$PREFIX/lib -lfreetype -lz
export PKG_CONFIG
export FREETYPE_CFLAGS
export FREETYPE_CONFIG
export FREETYPE_LIBS
./configure --host=$HOST --target=$HOST --build=$BUILD --prefix=$PREFIX --libdir=$PREFIX/lib --include=$PREFIX/include --disable-x11 --enable-debug --disable-voodoo --disable-mmx disable-see --disable-sdl --enable-jpeg --enable-zlib --enable-png --enable-gif --enable-freetype --enable-video4linux --enable-video4linux2 --with-gfxdrivers=none --with-inputdrivers=none CFLAGS=-I$PREFIX CFLAGS="-I$PREFIX/include/" LIBS=-L$PREFIX/lib --enable-fbdev=yes
#修改tools/directfb-csource.c, 声明FILE *f要提前一下,不然compile不过
FILE *f = fopen(filename[0], "r");
#测试DirectFB,
0. 需要修改debug.h, 把D_DEBUG_ENABLED的MACRO设置为0
1. 需要修改dfbg.c, 在main函数结束前把sleep(20),
使得图片显示时间长点,确保能够看到图片。然后重新compile
2. 把directfb目录中的bin lib share拷贝到USB DISK, 新建立libs, 把$PREFIX/lib下的library
拷贝到libs下,把libs拷贝到USB DISK
3. 启动2440, 在/tmp下建立directfb
4. mount -t vfat /dev/scsi/host0/bus0/target0/lun0/part1 /tmp/directfb
5. download test picture sample.jpg, run ./directfb/bin/arm-linux-dfbg sample.jpg
此时能够看到图片成功显示
6. 需要显示png图片,只需要把directfb/libs加进LD_LIBRARY_PATH搜索路径就OK了,
然后重复步骤5就OK了
export PATH=/tmp/graphics/arm/bin/:$PATH
export LD_LIBRARY_PATH=/tmp/graphics/arm/lib/:$LD_LIBRARY_PATH
如果需要 2D支持,可以在directfb上加入Cairo支持
#Step10 Cairo
CC=$COMPILER /
directfb_CFLAGS="-I$PREFIX/include/directfb" /
directfb_LIBS="$PREFIX/lib/libdirectfb.so /
$PREFIX/lib/libdirect.so /
$PREFIX/lib/libfusion.so" /
png_REQUIRES="$PREFIX/lib/pkgconfig" /
png_CFLAGS="-I$PREFIX/include" /
png_LIBS=$PREFIX/lib/libpng12.so /
FONTCONFIG_CFLAGS="-I$PREFIX/include/fontconfig" /
FONTCONFIG_LIBS=$PREFIX/lib/libfontconfig.so /
FREETYPE_CFLAGS="-I$PREFIX/include/freetype2" /
FREETYPE_LIBS=$PREFIX/lib/libfreetype.so /
./configure --prefix=$PREFIX --build=$BUILD --host=$HOST /
--enable-directfb=yes --without-x --disable-xlib --disable-xlib-xrender /
--disable-win32 --disable-pdf --disable-ps --disable-svg --enable-png ac_cv_lib_z_compress=yes /
ac_header_compiler=yes ac_header_preproc=yes CFLAGS=-I$PREFIX --enable-pdf CFLAGS="-I$PREFIX/include/" LIBS=-L$PREFIX/lib
make
make install
#关于Cairo在2440上的测试程序,目前正在编写中,调试OK后再贴出来
MSN:tinix123@hotmail.com
EMAIL:tinix123@gmail.com
有疑问的可以给我发邮件,大家一起探讨
#Step1 install pkg-config
1. remove old version pkg-config
2. install version0.2 pkg-config
./configure --prefix=/usr/local
make
make install
#Step2
export PREFIX=/tmp/graphics/arm
export LD_LIBRARY_PATH=$PREFIX/lib
export PKG_CONFIG_PATH=$LD_LIBRARY_PATH/pkgconfig
export COMPILER=arm-linux-gcc
#This use arm gcc-2.95.3
export HOST=arm-linux
export BUILD=i386-linux
#Step3 INSTALL LIBC
CC=$COMPILER ./configure --build=$BUILD --host=$HOST --prefix=$PREFIX glib_cv_uscore=no ac_cv_func_posix_getpwuid_r=yes glib_cv_stack_grows=no
#glib_cv_uscore ac_cv_func_posix_getpwuid_r must be set when cross-compile, otherwise configure will error
#Modify config.h, add
#ifndef SSIZE_MAX
#define SSIZE_MAX 0x7fffffff
#endif
#If occue glib_genmarshal error, Must modify file gobject/Makefile tests/gobject/Makefile
#Modify
glib_genmarshal = $(GLIB_GENMARSHAL)
#as:
LD_LIBRARY_PATH=/"//";
export LD_LIBRARY_PATH;
glib_genmarshal = $(GLIB_GENMARSHAL)
LD_LIBRARY_PATH=/"/home/tinix/tools/GTK/DFB-DESKTOP/DirectFB-Related/install-dir/gtkdfb/usr/local/lib/";
export LD_LIBRARY_PATH;
make
make install
#Step4 Freetype
CC=$COMPILER ./configure --host=$HOST --build=$BUILD --prefix=$PREFIX
make
make install
#Step5 xml
CC=$COMPILER ./configure --host=$HOST --build=$BUILD --prefix=$PREFIX --without-debug
#add PATH_MAX in file testModule.c
#define PATH_MAX 20
make
make install
#Step6 Fontconfig
CC=$COMPILER ./configure --build=$BUILD --host=$HOST /
--prefix=$PREFIX /
--with-freetype-config=$PREFIX/bin/freetype-config --enable-libxml2 --with-arch=arm
make
make install
#Step7 zlib
CC=$COMPILER ./configure --prefix=$PREFIX --shared
make
make install
#Step8 libpng
CC=$COMPILER ./configure --host=$HOST --build=$BUILD --prefix=$PREFIX ac_cv_lib_z_zlibVersion=yes CFLAGS=-I$PREFIX/include
#Modify Makefile
#Modify
LIBS = -lz -lm
#as
LIBS = -lm
make
make install
#Step9 JPEG
CC=$COMPILER ./configure --host=$HOST --build=$BUILD --prefix=$PREFIX
make
make install
make install-lib
#Step9 Directfb
CC=$COMPILER
PKG_CONFIG=/usr/local/bin/pkg-config
FREETYPE_CFLAGS=-I$PREFIX/include/freetype2
FREETYPE_CONFIG=$PREFIX/bin/freetype-config
FREETYPE_LIBS=-L$PREFIX/lib -Wl,--rpath -Wl,$PREFIX/lib -lfreetype -lz
export PKG_CONFIG
export FREETYPE_CFLAGS
export FREETYPE_CONFIG
export FREETYPE_LIBS
./configure --host=$HOST --target=$HOST --build=$BUILD --prefix=$PREFIX --libdir=$PREFIX/lib --include=$PREFIX/include --disable-x11 --enable-debug --disable-voodoo --disable-mmx disable-see --disable-sdl --enable-jpeg --enable-zlib --enable-png --enable-gif --enable-freetype --enable-video4linux --enable-video4linux2 --with-gfxdrivers=none --with-inputdrivers=none CFLAGS=-I$PREFIX CFLAGS="-I$PREFIX/include/" LIBS=-L$PREFIX/lib --enable-fbdev=yes
#修改tools/directfb-csource.c, 声明FILE *f要提前一下,不然compile不过
FILE *f = fopen(filename[0], "r");
#测试DirectFB,
0. 需要修改debug.h, 把D_DEBUG_ENABLED的MACRO设置为0
1. 需要修改dfbg.c, 在main函数结束前把sleep(20),
使得图片显示时间长点,确保能够看到图片。然后重新compile
2. 把directfb目录中的bin lib share拷贝到USB DISK, 新建立libs, 把$PREFIX/lib下的library
拷贝到libs下,把libs拷贝到USB DISK
3. 启动2440, 在/tmp下建立directfb
4. mount -t vfat /dev/scsi/host0/bus0/target0/lun0/part1 /tmp/directfb
5. download test picture sample.jpg, run ./directfb/bin/arm-linux-dfbg sample.jpg
此时能够看到图片成功显示
6. 需要显示png图片,只需要把directfb/libs加进LD_LIBRARY_PATH搜索路径就OK了,
然后重复步骤5就OK了
export PATH=/tmp/graphics/arm/bin/:$PATH
export LD_LIBRARY_PATH=/tmp/graphics/arm/lib/:$LD_LIBRARY_PATH
如果需要 2D支持,可以在directfb上加入Cairo支持
#Step10 Cairo
CC=$COMPILER /
directfb_CFLAGS="-I$PREFIX/include/directfb" /
directfb_LIBS="$PREFIX/lib/libdirectfb.so /
$PREFIX/lib/libdirect.so /
$PREFIX/lib/libfusion.so" /
png_REQUIRES="$PREFIX/lib/pkgconfig" /
png_CFLAGS="-I$PREFIX/include" /
png_LIBS=$PREFIX/lib/libpng12.so /
FONTCONFIG_CFLAGS="-I$PREFIX/include/fontconfig" /
FONTCONFIG_LIBS=$PREFIX/lib/libfontconfig.so /
FREETYPE_CFLAGS="-I$PREFIX/include/freetype2" /
FREETYPE_LIBS=$PREFIX/lib/libfreetype.so /
./configure --prefix=$PREFIX --build=$BUILD --host=$HOST /
--enable-directfb=yes --without-x --disable-xlib --disable-xlib-xrender /
--disable-win32 --disable-pdf --disable-ps --disable-svg --enable-png ac_cv_lib_z_compress=yes /
ac_header_compiler=yes ac_header_preproc=yes CFLAGS=-I$PREFIX --enable-pdf CFLAGS="-I$PREFIX/include/" LIBS=-L$PREFIX/lib
make
make install
#关于Cairo在2440上的测试程序,目前正在编写中,调试OK后再贴出来
MSN:tinix123@hotmail.com
EMAIL:tinix123@gmail.com
有疑问的可以给我发邮件,大家一起探讨