使用DirecetFB支持Qt4.7.0

本文详细介绍DirectFB及相关依赖库的编译与安装过程,包括zlib、libjpeg、libpng、freetype等库的交叉编译步骤,并提供了解决常见错误的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

源码包:
directFB 源码包 DirectFB-1.4.9.tar.gz http://www.directfb.org/index.php?path=Main/Downloads
freetype 源码包 freetype-2.4.6.tar.gz http://freetype.sourceforge.net/index2.html
libjpeg 源码包 jpegsrc.v8d.tar.gz http://www.ijg.org/
libpng 源码包 libpng-1.5.9.tar.gz http://www.libpng.org/pub/png/libpng.html
zlib 源码包 zlib-1.2.6.tar.gz http://www.zlib.net/

补丁文件:
DirectFB 1.4.9支持Libpng 1.5.x所需的补丁
DirectFB-1.4.9-libpng-1.5.patch http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/dev-libs/DirectFB/files/
0.准备工作
将所有源代码包都复制到 /home/lean/6410目录中
终端切换到root权限:#sudo su

一、编译和安装依赖包  
1.交叉编译工具安装
【Qt4.7.0触摸屏(tslib 1.4)移植到OMAP3530全记录】,以下称为前文。
 
2.tslib 编译与安装
设置环境变量:
#export TSLIB=/usr/local/tslib
#export TSLIB_CFLAGS=$TSLIB/lib
#export TSLIB_LIBS=$TSLIB/lib

3.zlib编译与安装
解压缩: #tar zvxf zlib-1.2.6.tar.gz
配置: #CC=arm-none-linux-gnueabi-gcc ./configure --prefix=/usr/local/zlib
编译及安装: #make
     #make install
设置环境变量: #export ZLIB=/usr/local/zlib

4.libjpeg编译与安装
解压缩: #tar zvxf jpegsrc.v8d.tar.gz
切换目录:#cd jpeg-8d
执行配置:#./configure --host= arm-none-linux-gnueabi --prefix=/usr/local/jpeg --enable-shared
执行编译:#make
执行安装:#make install
设置环境变量: #export LIBJPEG=/usr/local/jpeg

5.libpng编译与安装
解压缩:#tar zvxf libpng-1.5.9.tar.gz
切换目录:#cd libpng-1.5.9
配置:#./configure --host= arm-none-linux-gnueabi --prefix=/usr/local/png
编译及安装: #make
             #make install
设置环境变量: #export LIBPNG=/usr/local/png
               #export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/png/lib/pkgconfig
注意:由于libpng-1.5.9在安装的时候漏拷贝了其根目录下的pnginfo.h和pngstruct.h到安装目录,所以这里要手动 拷贝这两个文件到/usr/local/png/include/libpng15目录中,否则在编译directFB时候会出错。

6.freetype编译与安装
解压缩:#tar zvxf freetype-2.4.6.tar.gz
切换目录:#cd freetype-2.4.6
配置:#./configure --host= arm-none-linux-gnueabi --prefix=/usr/local/freetype
编译及安装: #make
             #make install
设置环境变量: #export FREETYPE=/usr/local/freetype
               #export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/freetype/lib/pkgconfig
至此directFB所需的依赖包都安装完成。注意:在安装libpng前首先得安装zlib否则会出现找不到zlib错误出现。

二、编译和安装directFB
1.设置环境变量
#export LDFLAGS="$LDFLAGS -L$TSLIB/lib -L$LIBJPEG/lib -L$LIBPNG/lib -L$FREETYPE/lib -L$ZLIB/lib -lm"
#export CFLAGS="$CFLAGS -I$TSLIB/include -I$LIBJPEG/include -I$LIBPNG/include -I$FREETYPE/include -I$ZLIB/include"

2.对directFB-1.4.9应用补丁
directFB-1.4.9使用libpng-1.5.x会出现版本不兼容的情况,所以需要对directFB-1.4.9源码打libpng-1.5.x支持补丁。
解压源代码:#tar zvxf DirectFB-1.4.9.tar.gz
切换目录:#cd DirectFB-1.4.9
应用补丁:#patch -p1 < ../DirectFB-1.4.9-libpng-1.5.patch
如果出现patch命令不存在要先安装patch:apt-get install patch 补丁成功以后将会提示应用补丁的文件列表。

3.配置directFB
#./configure --host=arm-linux --prefix=/usr/local/directFB --with-gfxdrivers=none --with-inputdrivers=all --enable-png --enable-jpeg --disable-tiff --enable-zlib --enable-sdl=no --enable-gif=no --disable-x11 --enable-debug --sysconfdir=/etc --enable-fbdev
等待配置完成,并查看所对应的模块是否已经找到,如果出现未找到某个模块,要着重检查环境变量是否设置正确,尤其是下面两个。
#export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/freetype/lib/pkgconfig
#export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/png/lib/pkgconfig

4.编译及安装 #make
             #make install

三、开发板部署
#export TSLIB=/usr/local/tslib
#export LIBJPEG=/usr/local/libjpeg
#export LIBPNG=/usr/local/libpng
#export FREETYPE=/usr/local/freetype
#export ZLIB=/usr/local/zlib
#export DIRECTFB=/usr/local/directFB
#export LD_LIBRARY_PATH=$TSLIB/lib:$LIBJPEG/lib:$LIBPNG/lib:$FREETYPE/lib:$ZLIB/lib:$DIRECTFB/lib 修改或新建/etc/directfbrc文件,内容如下:
system=fbdev
fbdev=/dev/fb0
wm=default

四、配置QTE
1 前文基础上添加 -no-gfx-linuxfb -no-gfx-transformed -no-gfx-multiscreen -no-gfx-vnc -no-gfx-qvfb -qt-gfx-directfb -I/usr/local/directFB/include -L/usr/local/directFB/lib
2 修改 /opt/qt-4.7.0-arm/mkspecs/qws/linux-arm-g++下的qmake.conf:
QT_CFLAGS_DIRECTFB = -D_REENTRANT -I/usr/local/directFB/include/directfb  
QT_LIBS_DIRECTFB = -L/usr/local/directFB/lib -ldirectfb -lfusion -ldirect -lpthread


错误解决: 1 "The DirectFB screen driver functionality test failed! You might need to modify the include and library search paths by editing QT_CFLAGS_DIRECTFB and QT_LIBS_DIRECTFB in ......
执行#pkg-config --libs directfb 获得 QT_LIBS_DIRECTFB
    #pkg-config --cflags directfb 获得 QT_CFLAGS_DIRECTFB
2 ../src/.libs/libdirectfb.so: undefined reference to `gzdopen'
../src/.libs/libdirectfb.so: undefined reference to `gzclose'
../src/.libs/libdirectfb.so: undefined reference to `gzwrite'
collect2: ld returned 1 exit status
make[2]: *** [dfbdump] Error 1
make[2]: Leaving directory `/home/dorke/work/DirectFB-1.2.9/tools'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/dorke/work/DirectFB-1.2.9'
make: *** [all] Error 2
类似的错误用类似的解决办法: 加上-lm -lz
gedit tools/Makefile
LDFLAGS = -L/usr/local/tslib/lib -L/usr/local/jpeg/lib -L/usr/local/png/lib -L/usr/local/freetype/lib -L/usr/local/zlib/lib -lm -lz
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值