DirectFB+GTK交叉编译记录

来源:互联网 发布:互助系统源码出售 编辑:程序博客网 时间:2024/04/29 12:49


一、已解决问题记录


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./configuremake; make installcd ../# Environment VariablesPREFIX=/usr/directfbexport LDFLAGS=-L$PREFIX/libexport CFLAGS="-g -I$PREFIX/include"export PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig# tslib# 友善之臂是一线触摸 需修改硬件# glibtar xjf glib-2.12.13.tar.bz2 -C ./cd glib-2.12.13echo ac_cv_type_long_long=yes>arm-linux.cacheecho glib_cv_stack_grows=no>>arm-linux.cacheecho glib_cv_uscore=no>>arm-linux.cacheecho ac_cv_func_posix_getpwuid_r=yes>>arm-linux.cacheCC=arm-linux-gcc ./configure --host=arm-linux --build=i686-pc-linux --prefix=$PREFIX --cache-file=arm-linux.cachemake; make installcd ../# atktar xjf atk-1.19.3.tar.bz2 -C ./cd atk-1.19.3./configure --host=arm-linux --prefix=$PREFIXmake; make installcd ../# jpeg-6b !!! 1 !!!tar xvzf jpegsrc.v6b.tar.gz -C ./cd jpeg-6bcp /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-staticgedit Makefile &# 修改生成的Makefile文件:# library (.a) file creation commandmakeAR= 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/manmkdir $PREFIX/man/man1make; make install -libcd ../# zlibtar xjf zlib-1.2.3.tar.bz2 -C ./cd zlib-1.2.3CC=arm-linux-gcc ./configure --prefix=$PREFIX --sharedmake; make installcd ../# libpngtar xjf libpng-1.2.19.tar.bz2 -C ./cd libpng-1.2.19./configure --host=arm-linux --prefix=$PREFIXmake; make installcd ../# expattar xvzf expat-2.0.1.tar.gz -C ./cd expat-2.0.1./configure --host=arm-linux --prefix=$PREFIXmake; make installcd ../# freetypetar xjf freetype-2.3.5.tar.bz2 -C ./cd freetype-2.3.5./configure --host=arm-linux --prefix=$PREFIXmake; make installcd ../# libxmltar xvzf libxml2-2.6.29.tar.gz -C ./cd libxml2-2.6.29./configure --host=arm-linux --prefix=$PREFIXmake; make installcd ../# fontconfigtar xvzf fontconfig-2.4.2.tar.gz -C ./cd fontconfig-2.4.2export LIBXML2_CFLAGS=-I$PREFIX/include/libxml2export LIBXML2_LIBS="-L$PREFIX/lib -lxml2"./configure --host=arm-linux --prefix=$PREFIX --with-freetype-config=$PREFIX/bin/freetype-config --with-arch=armmake; make installcd ../# tifftar xvzf tiff-3.7.4.tar.gz -C ./cd tiff-3.7.4./configure --host=arm-linux --prefix=$PREFIX --enable-sharedmake; make installcd ../# DirectFBtar 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=nomake; make installcd ../# cairotar 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-pngmake; make installcd ../# Pango !!! 2 !!!tar xjf pango-1.16.4.tar.bz2  -C ./cd pango-1.16.4gedit configure &# 修改configure文件,将下面一些参数改成true   @line 21284have_cairo=truehave_cairo_png=truehave_cairo_ps=truehave_cairo_pdf=truehave_cairo_freetype=trueexport FREETYPE_CONFIG=$PREFIX/bin/freetype-config./configure --host=arm-linux --prefix=$PREFIX --enable-cairo --without-xmake; make installcd ../# gtktar xjf gtk+2.10.14.tar.bz2 -C ./cd gtk+-2.10.14/apt-get install libgdk-pixbuf2-devexport 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-libtiffmake; make installcd ../

2. 文件系统目录

mkdir rootfs_directfb/usr/directfb/cp /usr/directfb/* rootfs_directfb/usr/directfb/ -rfdsync# 复制字库cp /usr/share/fonts/ rootfs_directfb/usr/share/ -rfdsyncrm rootfs_directfb/usr/share/X11 -rfsyncrm rootfs_directfb.img -rfmkyaffs2image-128M rootfs_directfb/ rootfs_directfb.imgcp rootfs_directfb.img /mnt/share/sync

3. 目标机端

## 目标板上 ##export PREFIX=/usr/directfbexport PATH=$PATH:$PREFIX/binmkdir $PREFIX/etc/pango/$PREFIX/bin/pango-querymodules > $PREFIX/etc/pango/pango.modulesmkdir $PREFIX/etc/gtk-2.0/$PREFIX/bin/gdk-pixbuf-query-loaders > $PREFIX/etc/gtk-2.0/gdk-pixbuf.loadersgtk-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 0
原创粉丝点击