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
    评论
交叉编译 Qt 5.14.2 源码,需要先安装交叉编译工具链和对应的库文件,然后使用 Qt 的 configure 工具进行配置,最后进行编译。 以下是一个简单的步骤: 1. 安装交叉编译工具链和库文件,例如 arm-linux-gnueabihf-gcc 和 libssl-dev。可以参考交叉编译工具链的文档或者咨询厂商的技术支持。 2. 下载 Qt 5.14.2 源码包,解压后进入源码目录。 3. 配置 Qt 的编译选项,使用 configure 工具。可以使用以下命令: ``` ./configure -prefix /opt/qt5 \ -release -opensource -confirm-license \ -no-icu -no-opengl -no-xcb -no-glib -no-pulseaudio \ -no-feature-bearermanagement -no-feature-ftp \ -no-feature-socks5 -no-feature-xmlstream -no-feature-xml \ -no-feature-qml-debug -no-feature-process -no-feature-sharedmemory \ -no-feature-animation -no-feature-printer -no-feature-qml-network \ -no-feature-qml -no-feature-qml-debug -no-feature-qml-designer \ -no-feature-qml-filesystem -no-feature-qml-debugger -no-feature-qml-workerscript \ -no-feature-qml-xmlhttprequest -no-feature-qml-workercontext \ -no-feature-qml-websockets -no-feature-qml-webchannel \ -no-feature-qml-mirroring -no-feature-qml-live-reload \ -no-feature-qml-context2d \ -opensource -confirm-license \ -no-sql-sqlite -no-sql-sqlite2 -no-sql-odbc -no-sql-psql \ -no-sql-mysql -no-sql-ibase -no-sql-tds -no-sql-tds \ -no-ssl -no-openssl \ -no-feature-geoservices -no-feature-geoservices-mapboxgl \ -no-feature-geoservices-nokia -no-feature-geoservices-google \ -no-feature-geoservices-here -no-feature-geoservices-mapbox \ -no-feature-geoservices-osm \ -no-feature-testlib \ -no-qml-debug \ -no-widgets \ -no-gui \ -no-iconv \ -no-compile-examples \ -no-cups \ -no-dbus \ -no-fontconfig \ -no-freetype \ -no-harfbuzz \ -no-journald \ -no-kms \ -no-linuxfb \ -no-mirclient \ -no-mtdev \ -no-pcre \ -no-pulseaudio \ -no-rpath \ -no-sm \ -no-syslog \ -no-tslib \ -no-xcb-xinput \ -no-xkbcommon \ -no-xinerama \ -no-xinput \ -no-xkb \ -no-xcursor \ -no-xfixes \ -no-xrandr \ -no-xrender \ -no-xshape \ -no-xsync \ -no-xvideo \ -no-zlib \ -no-eglfs \ -no-gbm \ -no-directfb \ -no-linuxfb \ -no-mirclient \ -no-wayland \ -no-icu \ -no-opengl \ -no-glib \ -platform linux-g++-32 \ -xplatform linux-arm-gnueabi-g++ \ -device-option CROSS_COMPILE=/usr/bin/arm-linux-gnueabihf- \ -device-option SYSROOT=/path/to/sysroot ``` 其中,-prefix 指定 Qt 的安装路径,-xplatform 指定交叉编译的平台,-device-option 指定交叉编译工具链的前缀和 sysroot 路径。 4. 执行 make 命令进行编译。 5. 执行 make install 命令进行安装。 完成以上步骤后,就能在指定的安装路径下找到交叉编译后的 Qt 库和工具了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值