DirectFB+GTK交叉编译记录


一、已解决问题记录


1. 使用32位Linux主机编译,否则有些软件包中使用Python时会有错误;

2. 设置的DirectFB的安装路径是根文件系统中的/usr/directfb,那么在目标系统中也必须保证DirectFB是在这样的一个目录中。因为DirectFB编译时已经把这个目录编译到程序中,无法后期设置,所以可以把所有软件包都安装在这个目录。即设置的安装路径必须和目标机中一致

3. 如果未支持fusion,那么编译directfb时,“./configure”别添加“--enable-debug"选项,否则会报fusion相关错误。


二、编译与运行过程记录


1. 宿主机端

 

主机根据文章:《基于Ubuntu系统的LXDE桌面安装与配置 》

## 主机上工作 ##
## 安装相关软件包 ##
apt-get install autoconf automake gettext libglib2.0-dev

## 安装指定版本的libtool ##
# 1. 首先移除系统中的libtool: apt-get remove libtool (一般已安装的版本偏高,所以移除,未安装略去这一步)
# 2. “ctrl + alt + t”新打开一个终端(防止安装在前面指定的“$PREFIX”冲突)。
# 3. 命令行
tar zxvf libtool-2.2.6a.tar.gz 
cd libtool-2.2.6
./configure
make; make install
cd ../


# Environment Variables
PREFIX=/usr/directfb
export LDFLAGS=-L$PREFIX/lib
export CFLAGS="-g -I$PREFIX/include"
export PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig


# tslib
# 友善之臂是一线触摸 需修改硬件

# glib
tar xjf glib-2.12.13.tar.bz2 -C ./
cd glib-2.12.13

echo ac_cv_type_long_long=yes>arm-linux.cache
echo glib_cv_stack_grows=no>>arm-linux.cache
echo glib_cv_uscore=no>>arm-linux.cache
echo ac_cv_func_posix_getpwuid_r=yes>>arm-linux.cache
CC=arm-linux-gcc ./configure --host=arm-linux --build=i686-pc-linux --prefix=$PREFIX --cache-file=arm-linux.cache
make; make install

cd ../


# atk
tar xjf atk-1.19.3.tar.bz2 -C ./
cd atk-1.19.3

./configure --host=arm-linux --prefix=$PREFIX
make; make install

cd ../


# jpeg-6b !!! 1 !!!
tar xvzf jpegsrc.v6b.tar.gz -C ./
cd jpeg-6b

cp /usr/local/share/libtool/config/config.sub .
cp /usr/local/share/libtool/config/config.guess .

./configure CC=arm-linux-gcc --prefix=$PREFIX --enable-shared --enable-static

gedit Makefile &

# 修改生成的Makefile文件:
# library (.a) file creation commandmake
AR= ar rc 改成 AR= arm-linux-ar rc (同上)
# second step in .a creation (use "touch" if not needed)
AR2= ranlib 改成 AR2=arm-linux-ranlib (同上)

mkdir $PREFIX/man
mkdir $PREFIX/man/man1
make; make install -lib

cd ../


# zlib
tar xjf zlib-1.2.3.tar.bz2 -C ./
cd zlib-1.2.3

CC=arm-linux-gcc ./configure --prefix=$PREFIX --shared
make; make install

cd ../


# libpng
tar xjf libpng-1.2.19.tar.bz2 -C ./
cd libpng-1.2.19

./configure --host=arm-linux --prefix=$PREFIX
make; make install

cd ../


# expat
tar xvzf expat-2.0.1.tar.gz -C ./
cd expat-2.0.1

./configure --host=arm-linux --prefix=$PREFIX
make; make install

cd ../


# freetype
tar xjf freetype-2.3.5.tar.bz2 -C ./
cd freetype-2.3.5

./configure --host=arm-linux --prefix=$PREFIX
make; make install

cd ../


# libxml
tar xvzf libxml2-2.6.29.tar.gz -C ./
cd libxml2-2.6.29

./configure --host=arm-linux --prefix=$PREFIX
make; make install

cd ../


# fontconfig
tar xvzf fontconfig-2.4.2.tar.gz -C ./
cd fontconfig-2.4.2

export LIBXML2_CFLAGS=-I$PREFIX/include/libxml2
export LIBXML2_LIBS="-L$PREFIX/lib -lxml2"
./configure --host=arm-linux --prefix=$PREFIX --with-freetype-config=$PREFIX/bin/freetype-config --with-arch=arm
make; make install

cd ../


# tiff
tar xvzf tiff-3.7.4.tar.gz -C ./
cd tiff-3.7.4

./configure --host=arm-linux --prefix=$PREFIX --enable-shared
make; make install

cd ../


# DirectFB
tar xvzf DirectFB-1.1.1.tar.gz -C ./
cd DirectFB-1.1.1

./configure --host=arm-linux --target=arm-linux --prefix=$PREFIX --with-gfxdrivers=none --with-inputdrivers=all --enable-png --enable-jpeg --enable-zlib --enable-sdl=no --enable-gif=no --sysconfdir=/etc --enable-fbdev --disable-x11 --enable-multi=no

make; make install

cd ../


# cairo
tar xvzf cairo-1.4.10.tar.gz -C ./
cd cairo-1.4.10

./configure --host=arm-linux --prefix=$PREFIX --without-x --disable-xlib --disable-xlib-xrender --enable-directfb --enable-freetype --disable-win32 --enable-pdf --enable-ps --disable-svg --enable-png
make; make install

cd ../


# Pango !!! 2 !!!
tar xjf pango-1.16.4.tar.bz2  -C ./
cd pango-1.16.4

gedit configure &

# 修改configure文件,将下面一些参数改成true   @line 21284
have_cairo=true
have_cairo_png=true
have_cairo_ps=true
have_cairo_pdf=true
have_cairo_freetype=true

export FREETYPE_CONFIG=$PREFIX/bin/freetype-config

./configure --host=arm-linux --prefix=$PREFIX --enable-cairo --without-x
make; make install

cd ../


# gtk
tar xjf gtk+2.10.14.tar.bz2 -C ./
cd gtk+-2.10.14/

apt-get install libgdk-pixbuf2-dev

export LDFLAGS="-L$PREFIX/lib -Wl,-rpath,$PREFIX/lib"
export CPPFLAGS="-I$PREFIX/include"

./configure --host=arm-linux --prefix=$PREFIX --with-gdktarget=directfb --without-x --without-libtiff

make; make install

cd ../

2. 文件系统目录

mkdir rootfs_directfb/usr/directfb/

cp /usr/directfb/* rootfs_directfb/usr/directfb/ -rfd
sync

# 复制字库
cp /usr/share/fonts/ rootfs_directfb/usr/share/ -rfd
sync
rm rootfs_directfb/usr/share/X11 -rf
sync

rm rootfs_directfb.img -rf
mkyaffs2image-128M rootfs_directfb/ rootfs_directfb.img
cp rootfs_directfb.img /mnt/share/
sync

3. 目标机端

## 目标板上 ##
export PREFIX=/usr/directfb
export PATH=$PATH:$PREFIX/bin

mkdir $PREFIX/etc/pango/
$PREFIX/bin/pango-querymodules > $PREFIX/etc/pango/pango.modules

mkdir $PREFIX/etc/gtk-2.0/
$PREFIX/bin/gdk-pixbuf-query-loaders > $PREFIX/etc/gtk-2.0/gdk-pixbuf.loaders

gtk-demo

终端上打印信息

[root@FriendlyARM /]# gtk-demo 

     =======================|  DirectFB 1.1.1  |=======================
          (c) 2001-2007  The DirectFB Organization (directfb.org)
          (c) 2000-2004  Convergence (integrated media) GmbH
        ------------------------------------------------------------

(*) DirectFB/Core: Single Application Core. (2014-02-28 14:39) 
(*) Direct/Thread: Running 'VT Switcher' (CRITICAL, 1136)...
(*) Direct/Thread: Running 'Keyboard Input' (INPUT, 1137)...
(*) DirectFB/Input: Keyboard 0.9 (directfb.org)
(*) Direct/Thread: Running 'PS/2 Input' (INPUT, 1138)...
(*) DirectFB/Input: IMPS/2 Mouse (1) 1.0 (directfb.org)
(*) Direct/Thread: Running 'PS/2 Input' (INPUT, 1139)...
(*) DirectFB/Input: IMPS/2 Mouse (2) 1.0 (directfb.org)
(*) Direct/Thread: Running 'Linux Input' (INPUT, 1140)...
(*) DirectFB/Input: fa_ts_input (1) 0.1 (directfb.org)
(*) Direct/Thread: Running 'Linux Input' (INPUT, 1141)...
(*) DirectFB/Input: mma7660 (2) 0.1 (directfb.org)
(!) Direct/Modules: Could not open module directory `/usr/directfb/lib/directfb-1.1-0/gfxdrivers'!
    --> No such file or directory
(*) DirectFB/Graphics: Generic Software Rasterizer 0.6 (directfb.org)
(*) DirectFB/Core/WM: Default 0.3 (directfb.org)
(*) FBDev/Mode: Testing 800x480 RGB32
(*) FBDev/Mode: Preparing switch to 800x480 RGB32
(*) FBDev/Mode: Testing 800x480 RGB32
(*) FBDev/Mode: Preparing switch to 800x480 RGB32
(*) FBDev/Mode: Testing 800x480 RGB32
(*) FBDev/Mode: Preparing switch to 800x480 RGB32
(*) FBDev/Mode: Testing 800x480 RGB32
(*) FBDev/Mode: Preparing switch to 800x480 RGB32
(*) FBDev/Mode: Testing 800x480 RGB32
(*) FBDev/Mode: Preparing switch to 800x480 RGB32
(*) FBDev/Surface: Allocated 800x480 32bit RGB32 buffer at offset 0 and pitch 3200.
(*) FBDev/Mode: (Post)Setting 800x480 RGB32
(*) FBDev/Mode: Switched to 800x480 (800x480) at 32 bit RGB32 (wanted RGB32).
(*) FBDev/Mode: Testing 800x480 RGB32
(*) FBDev/Mode: Preparing switch to 800x480 RGB32
(*) FBDev/Mode: (Post)Setting 800x480 RGB32
(*) Direct/Thread: Running 'EventBufferFeed' (MESSAGING, 1142)...

(gtk-demo:1133): Gdk-DirectFB-WARNING **: gdk_display_request_selection_notification Unimplemented function 


(gtk-demo:1133): Gdk-DirectFB-WARNING **: gdk_window_set_keep_above() not implemented.


(gtk-demo:1133): Gdk-DirectFB-WARNING **: gdk_window_set_keep_below() not implemented.



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值