基于DirectFB的GTK+的交叉编译[转]

 

嵌入式GTK的安装

GTK的依赖库库很多,如果要交叉编译GTK则每一个依赖库都要编译一遍,这些库包括:zlib-1.2.3 libpng-1.2.10 tiff-3.8.2 libtool1.5.24 jpegsrc.v6b freetype-2.1.10 libxml2-2.6.30 fontconfig-2.4.2 , DirectFB-1.1.0 , glib-2.12.10 , atk-1.20.0 , cairo-1.4.2 , pango-1.16.2 , gtk+-2.10.0

这些库的编译顺序按照上面的顺序安装。一般的安装过程为,

1.         JPEG, PNG以及TIFF图形库

2.         Freetype

3.         Fontconfig

4.         Glib

5.         ATK

6.         Cairo

7.         Pango

8.         GTK+

注意这些库的版本要与GTK+ 要求的版本要一致。按照GTK+-2.10.0 INSTALL文本的要求为Glib-2.12, Pango-1.1, ATK-1.9, Cairo-1.2

在编译这些库的源代码的时候最好写个build.sh文件,然后configure的时候直接运行这些build.sh文件就可以了。

我的pc机是Fedro2,我把交叉编译库安装在/opt/gui目录下,则各个build.sh的文件分别为,

1)        Zlib-1.2.3

CC=powerpc-linux-pc ./configure --prefix=/opt/gui --shared –build=i686 –target=powerpc-linux –host=powerpc-linux

2)        Libpng-1.2.10

echo ac_cv_fnuc_malloc_O_nonull=yes>>powerpc-linux.cache

CC=powerpc-linux-pc ./configure –cache-file=powerpc-linux.cache \

--prefix=/opt/gui --build=i686 –target=powerpc-linux –host=powerpc-linux \

“CFLAGS= ${CFLAGS} –I/opt/gui/include” \

“LIBS= -L/opt/gui/lib -lz”

3)        Tiff-3.8.2

CC=powerpc-linux-pc ./configure --prefix=/opt/gui \

--enable-shared --build=i686 –target=powerpc-linux –host=powerpc-linux \

“CFLAGS= ${CFLAGS} –I/opt/gui/include” \

“LIBS= -L/opt/gui/lib –lz”

4)        Libtool-1.5.24

CC=powerpc-linux-pc ./configure --prefix=/opt/gui \

--build=i686 –target=powerpc-linux –host=powerpc-linux

5)        Jpegsrc.v6b

CC=powerpc-linux-pc ./configure --prefix=/opt/gui –enable-shared –enable-static \

--enable-shared --build=i686 –target=powerpc-linux –host=powerpc-linux

在运行build.sh之后还需要修改Makefile文件中的LIBTOOL变量,把LIBTOOL=./libtool改为LIBTOOL=libtool,并且保证系统的libtool可执行程序在PATH路径中,因为在make的时候需要运行libtool

6)        Freetype-2.1.10

CC=powerpc-linux-pc ./configure --prefix=/opt/gui –build=i686 –target=powerpc-linux –host=powerpc-linux

7)        Libxml2-1.6.30

CC=powerpc-linux-pc ./configure --prefix=/opt/gui –build=i686 –target=powerpc-linux –host=powerpc-linux

编译fontconfig的时候需要libxml2这个库。

8)        Fontconfig-2.4.2

export PKG_CONFIG_PATH=/opt/gui/lib/pkgconfig:$PKG_CONFIG_PATH

CC=powerpc-linux-pc ./configure --prefix=/opt/gui –with-arch=powerpc –build=i686 –target=powerpc-linux –host=powerpc-linux –with-freetype-config=/opt/gui/bin/freetype-config

9)        DirectFB-1.1.0

echo ac_cv_path_FREETYPE_CONFIG=/opt/gui/bin/freetype-config>>powerpc-linux.cache

echo ac_cv_path_LIBPNG_CONFIG=/opt/gui/bin/libpng-config>>powerpc-linux.cache

CC=powerpc-linux-pc ./configure –cache-file=powerpc-linux.cache --prefix=/opt/gui –build=i686 –target=powerpc-linux –host=powerpc-linux \

--disable-x11 –with-gfxdrivers=none –enable-png –enable-jpeg –enable-tiff –enable-zlib \

“CFLAGS= -I/opt/gui/include” “LIBS= -L/opt/gui/lib -ljpeg -ltiff -lz”

10)     Glib-2.12.0

echo ac_cv_type_long_long=yes>>powerpc-linux.cache

echo glib_cv_stack_grows=no>>powerpc-linux.cache

echo glib_cv_uscore=no>>powerpc-linux.cache

echo ac_cv_func_posix_getwid_r=yes>>powerpc-linux.cache

echo glib_cv_monotonic_clock=yes>>powerpc-linux.cache

CC=powerpc-linux-pc ./configure –cache-file=powerpc-linux.cache --prefix=/opt/gui –build=i686 –target=powerpc-linux –host=powerpc-linux \

--enable-mem-pools

11)     Atk-1.20.0

export PKG_CONFIG_PATH=/opt/gui/lib/pkgconfig:$PKG_CONFIG_PATH

CC=powerpc-linux-pc ./configure --prefix=/opt/gui –diable-glibtest –build=i686 –target=powerpc-linux –host=powerpc-linux

12)     Cairo-1.4.2

export PKG_CONFIG_PATH=/opt/gui/lib/pkgconfig:$PKG_CONFIG_PATH

CC=powerpc-linux-pc ./configure --prefix=/opt/gui –enable-directfb –enable-xlib=no –build=i686 –target=powerpc-linux –host=powerpc-linux

“LIBS= -L/opt/gui/lib -lz”

在编译Cairo时,修改configure文件中的参数PKGCONFIG_REQUIRES=”Requires::private”PKGCONFIG_REQUIRES=”Requires”,这样生成的cairo-1.4.2/src目录下的cairo.pc文件中的requires就不会定义为Requires::private了,使得cairo的依赖库可以被后面的pango和其它源代码库的编译时使用了。

13)     Pango-1.16.2

echo ac_cv_cairo_ft_scaled_font_lock_face=yes>>powerpc-linux.cache

echo ac_cv_lib_cairo_cairo_surface_write_to_png=yes>>powerpc-linux.cache

echo ac_cv_path_FREETYPE_CONFIG=/opt/gui/bin/freetype-config>>powerpc-linux.cache

echo ac_cv_have_x=no>>powerpc-linux.cache

echo ac_cv_lib_freetype_FT_Get_Next_Char=yes>>powerpc-linux.cache

export PKG_CONFIG_PATH=/opt/gui/lib/pkgconfig:$PKG_CONFIG_PATH

CC=powerpc-linux-pc ./configure –cache-file=powerpc-linux.cache --prefix=/opt/gui –with-arch=powerpc –build=i686 –target=powerpc-linux –host=powerpc-linux \

--enable-backend \

“CFLAGS= -I/opt/gui/include” “GLIBS= -L/opt/gui/lib”

14)     Gtk+-2.10.0

echo ac_cv_path_GTK_UPDATE_ICON_CACHE=/usr/bin/gtk-update-icon-cache>>powerpc-linux.cache

echo ac_cv_path_GDK_PIXBUF_CSOURCE=/usr/bin/gtk-pixbuf-csource>>powerpc-linux.cache

export PKG_CONFIG_PATH=/opt/gui/lib/pkgconfig:$PKG_CONFIG_PATH

CC=powerpc-linux-pc ./configure –cache-file=powerpc-linux.cache --prefix=/opt/gui –build=i686 –target=powerpc-linux –host=powerpc-linux \

--enable-fbmanager –enable-debug=yes –with-gdktarget=directfb –without-x

“CFLAGS= -I/opt/gui/include” “LIBS= -L/opt/gui/lib -jpeg -ltiff -lz”

编译gtk时,修改configure文件中的参数PANGO_PACKAGES=”pango pangocairo”PANGO_PACKAGES=”pango pangoft2 pangocairo ”,使得编译gtk的时候可以链接到库libpangoft2库。

编译gtk时,修改configure文件中的参数GLIB_GENMATSHAL=`$PKG_CONFIG variable=glib genmarshal glib-2.0`GLIB_GENMATSHAL=/usr/local/bin/glib-genmarshal,使得编译gtk的时候可以运行pc/usr/local/bin下的glib-genmarshal而不是交叉编译下的glib-genmarshal程序。

编译gtk时,修改文件gtk+-2.10.0/gtk/gtkiconthem.c文件中的builtin_iconsicon_theme_builtin_icons,在函数_gtk_icon_theme_ensure_builtin_cache()中,1151行处。

编译gtk时,修改configure文件中的

if test “x$CUPS_CONFIG” | = ”xno”; then

HAVE_CUPS_TRUE=

HAVE_CUPS_FALSE= ‘#’

else

HAVE_CUPS_TRUE= ‘#’

HAVE_CUPS_FALSE=

修改为

if test “x$CUPS_CONFIG” | = ”xno”; then

HAVE_CUPS_TRUE= ‘#’

HAVE_CUPS_FALSE=

else

HAVE_CUPS_TRUE=

HAVE_CUPS_FALSE= ‘#’

这样在make的时候就不会去编译cups的支持了,从而不去找cups/cups.h文件了。

在编译GTKdemo时候要链接到pc上的库,所以需要设置LD_LIBRARY_PATH=/usr/local/lib,这样在make的时候就可以通过了。

在编译gtk 时,注释掉/gdk/gdkalias.h文件中的

//extern __typeof(gdk_colormap_change) IA_gdk_colormap_change __attribute((visiblity(“hidden”)));

gdkaliasdef.c文件中的

//#undef gdk_colormap_change

//extern __typeof(gdk_colormap_change)gdk_colormap_change __attribute((aliase(“IA_dk_colormap_change”) , visibility(“default”)))

注:在源代码编译的过程中,如果在configure的时候出现错误,首先查看环境变量的设置,再查看configure.log文件中出错的原因,分析出错的原因,或是因为依赖库的问题或其他的问题,作出相应的处理。另外,根据各个库中的.pc文件可以确定这个源代码库的编译过程中需要的其他库,然后用pkg-config看看所需要的库是否可以链接得到。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
交叉编译libx加GTK+2.1时候用到库各个库文件的集合,不用花费时间网上一个一个下载,已经经过本人亲测试实测,还可以编译GTK+directFB 1.1 libs_for_gtk Dir: atk-1.25.2.tar.gz atk-1.26.0.tar.gz bigreqsproto-1.1.2.tar.bz2 cairo-1.8.6.tar.gz CPAN-1.94.tar.gz DirectFB-1.1.1.tar.gz expat-2.0.1.tar.gz expat-2.1.0.tar.gz ExtUtils-MakeMaker-6.20.tar.gz fontconfig-2.4.2.tar.gz fontconfig-2.6.0.tar.gz fontconfig-2.7.3.tar.gz freetype-2.3.5.tar.bz2 freetype-doc-2.3.6.tar.bz2 glib-2.12.1.tar.bz2 glib-2.14.4.tar.gz glib-2.18.2.tar.bz2 glibc-2.2.5.tar.bz2 gtk+-2.10.14.tar.bz2 gtk+-2.10.7.tar.bz2 gtk+-2.12.12.tar.bz2 inputproto-2.2.tar.bz2 jpegsrc.v6b.rar jpegsrc.v6b.tar.gz kbproto-1.0.6.tar.bz2 libpng-1.2.10.tar.bz2 libpng-1.2.32.tar.lzma libpthread-stubs_0.1.orig.tar.gz libtool-1.5.22.tar.gz libtool-2.4.2.tar.xz libX11-1.0.3.tar.bz2 libX11-1.2.2.tar.bz2 libX11-1.3.2.tar.gz libX11-1.5.0.tar.bz2 libXau-1.0.7.tar.bz2 libXau-1.0.8.tar.bz2 libxcb-1.3.tar.bz2 libxcb-1.4.tar.bz2 libxcb-1.8.1.tar.bz2 libXdmcp-1.0.3.tar.gz libXdmcp-1.1.2.tar.bz2 libXext-1.0.1.tar.bz2 libXfont-1.4.4.tar.bz2 libXft-2.1.12.tar.bz2 libXft-2.1.13.tar.bz2 libxml2-2.6.30.tar.gz libxml2-2.6.32.tar.gz libxslt-1.1.29.tar.gz libXt-1.0.6.tar.bz2 pango-1.16.4.tar.bz2 pango-1.18.2.tar.gz pango-1.22.1.tar.bz2 pango-1.24.4.tar.bz2 pixman-0.24.0.tar.bz2 poky-pinky-3.1.1.tgz stubs-soft.h tiff-3.8.2.tar.gz tiff-4.0.7.tar.gz tslib-1.4.tar.gz xcb-proto-1.7.1.tar.bz2 xcmiscproto-1.1.2.tar.bz2 xcmiscproto-1.2.2.tar.bz2 xextproto-7.2.1.tar.bz2 xorg-server-1.3.0.0.tar.bz2 xorg-server-1.4.2.tar.bz2 xproto-7.0.23.tar.bz2 xtrans-1.2.7.tar.bz2 zlib-1.2.3.rar zlib-1.2.3.tar.gz zlib-1.2.5.tar.gz
交叉编译 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、付费专栏及课程。

余额充值