交叉编译GTK+2.x和libX,交叉编译xserver,一直GTK和X(或DirectFB)到i.MX6

1. 概述

最近公司做一个项目,把一个老的设备的已经有的程序移植到新的嵌入式开发平台,我(lin)开始着手祥光工作,原来旧的平台是用的Ti 的CPU AM3530,跑嵌入式linux,内核版本:2.6.32(embedded linux,kernel 2.6.32),新的开发板当然也是跑嵌入式linux系统,CPU性能有所提高。所以要先交叉编译相关各个的库。就仪器上面相关的库很多,所用的框架比较老了:基本框架是GTK+2.0和DirectFB;下面我参看了网上两个博客,和自己亲自实践,就本次移植做个笔记,希望对大伙有所参考价值。



2. 平台:

条目说明
build平台Linux ubuntu 4.4.0,Ubuntu16.04,64Bit
host平台飞思卡尔 i.MX6 q4,Linux,32bit
交叉编译工具链arm-phytec-linux-gnueabi-xx
其他工具已经安装好各个x86平台的编译工具,bulild essential


3. 需要移植到imx6的linux平台的所有库的列表以及下载方法:

wget -c http://xmlsoft.org/sources/libxml2-2.6.32.tar.gz                                #00

wget -c http://xorg.freedesktop.org/releases/X11R7.3/src/proto/inputproto-1.4.2.1.tar.bz2    #01
wget -c http://xorg.freedesktop.org/releases/X11R7.3/src/proto/kbproto-1.0.3.tar.bz2    #02
wget -c http://xorg.freedesktop.org/releases/X11R7.3/src/proto/bigreqsproto-1.0.2.tar.bz2    #03
wget -c http://xorg.freedesktop.org/releases/X11R7.3/src/proto/xproto-7.0.10.tar.bz2    #04
wget -c http://xorg.freedesktop.org/releases/X11R7.3/src/proto/xextproto-7.0.2.tar.bz2    #05
wget -c http://xorg.freedesktop.org/releases/X11R7.3/src/proto/xcmiscproto-1.1.2.tar.bz2    #06
wget -c http://xorg.freedesktop.org/releases/X11R7.3/src/proto/xf86bigfontproto-1.1.2.tar.bz2    #07
wget -c http://xorg.freedesktop.org/releases/X11R7.2/src/everything/xtrans-X11R7.2-1.0.3.tar.bz2            #08
wget -c http://xorg.freedesktop.org/releases/X11R7.3/src/lib/libXau-1.0.3.tar.bz2    #09
wget -c http://xorg.freedesktop.org/releases/X11R7.3/src/lib/libXdmcp-1.0.2.tar.bz2    #10
wget -c http://xorg.freedesktop.org/releases/X11R7.3/src/everything/util-macros-1.1.5.tar.bz2    #11
wget -c http://xorg.freedesktop.org/releases/X11R7.3/src/everything/libX11-1.1.3.tar.bz2    #12
wget -c ftp://ftp.tw.freebsd.org/pub/ FreeBSD/distfiles/xorg/lib/libX11-1.1.2.tar.bz2                #another 12
wget -c http://www.zlib.net/zlib-1.2.3.tar.bz2                                        #13
wget -c http://download.berlios.de/tslib/tslib-1.0.tar.bz2                                #14
wget -c http://download.savannah.gnu.org/releases/freetype/freetype-2.3.5.tar.bz2    #15
wget -c http://xorg.freedesktop.org/releases/X11R7.3/src/proto/compositeproto-0.4.tar.bz2    #16
wget -c http://xorg.freedesktop.org/releases/X11R7.3/src/proto/damageproto-1.1.0.tar.bz2    #17
wget -c http://xorg.freedesktop.org/releases/X11R7.3/src/proto/fixesproto-4.0.tar.bz2    #18
wget -c http://xorg.freedesktop.org/releases/X11R7.3/src/proto/recordproto-1.13.2.tar.bz2    #19
wget -c http://xorg.freedesktop.org/releases/X11R7.3/src/proto/resourceproto-1.0.2.tar.bz2    #20
wget -c http://xorg.freedesktop.org/releases/X11R7.3/src/proto/scrnsaverproto-1.1.0.tar.bz2    #21
wget -c http://xorg.freedesktop.org/releases/X11R7.3/src/proto/xineramaproto-1.1.2.tar.bz2    #22
wget -c http://xorg.freedesktop.org/releases/X11R7.3/src/proto/videoproto-2.2.2.tar.bz2     #23
git clone git://git.freedesktop.org/git/xorg/proto/calibrateproto.git                            #24
wget -c http://xorg.freedesktop.org/releases/X11R7.3/src/proto/fontsproto-2.0.2.tar.bz2    #25
wget -c http://xorg.freedesktop.org/releases/X11R7.3/src/proto/fontcacheproto-0.1.2.tar.bz2    #26
wget -c http://xorg.freedesktop.org/releases/X11R7.3/src/proto/randrproto-1.2.1.tar.bz2    #27
wget -c http://xorg.freedesktop.org/releases/X11R7.2/src/proto/renderproto-X11R7.0-0.9.2.tar.bz2    #28 
wget -c http://xorg.freedesktop.org/releases/X11R7.3/src/proto/renderproto-0.9.3.tar.bz2    #28 2rd
wget -c http://xorg.freedesktop.org/releases/X11R7.3/src/proto/xf86miscproto-0.9.2.tar.bz2    #29
wget -c http://xorg.freedesktop.org/releases/X11R7.3/src/proto/xf86vidmodeproto-2.2.2.tar.bz2    #30
wget -c http://xorg.freedesktop.org/releases/X11R7.3/src/proto/xf86dgaproto-2.0.3.tar.bz2    #31
wget -c http://xorg.freedesktop.org/releases/X11R7.3/src/lib/libxkbfile-1.0.4.tar.bz2    #32
git clone git://git.freedesktop.org/git/xorg/lib/libXCalibrate.git                            #33
wget -c http://xorg.freedesktop.org/releases/individual/lib/libXrender-0.9.2.tar.bz2    #34
wget -c http://xorg.freedesktop.org/releases/X11R7.3/src/lib/libXrender-0.9.4.tar.bz2    #34 2nd
wget -c http://xorg.freedesktop.org/releases/individual/lib/libXrandr-1.2.1.tar.bz2    #35
wget -c http://xorg.freedesktop.org/releases/X11R7.3/src/lib/libXrandr-1.2.2.tar.bz2    #35 2nd
wget -c http://xorg.freedesktop.org/releases/X11R7.3/src/lib/libfontenc-1.0.4.tar.bz2    #36
wget -c http://xorg.freedesktop.org/releases/X11R7.3/src/lib/libXfont-1.3.1.tar.bz2    #37
wget -c http://xorg.freedesktop.org/releases/individual/xserver/xorg-server-1.3.0.0.tar.bz2    #38 
wget -c http://xorg.freedesktop.org/releases/X11R7.3/src/xserver/xorg-server-1.4.tar.bz2    #38 2nd
wget -c http://x.cybermirror.org/pub/individual/lib/libXext-1.0.3.tar.bz2    #39
wget -c http://xorg.freedesktop.org/releases/X11R7.3/src/everything/libXext-1.0.2.tar.bz2    #39 2nd
wget -c http://xorg.freedesktop.org/releases/X11R7.3/src/everything/libXi-1.1.3.tar.bz2    #40

wget -c http://x.cybermirror.org/pub/individual/lib/libXi-1.1.2.tar.bz2    #41
wget -c http://downloads.sourceforge.net/expat/expat-2.0.0.tar.gz     #41 2nd
wget -c ftp://ftp.vcu.edu/pub/gnu+linux/puppylinux/pupget_packages-1/expat-2.0.0.tar.gz
wget -c ftp://ftp.linux.ee/pub/gentoo/distfiles/distfiles/fontconfig-2.4.2.tar.gz    #42
wget -c http://www.ijg.org/files/jpegsrc.v6b.tar.gz                                    #43
wget -c ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6b.tar.gz
wget -c http://xorg.freedesktop.org/releases/X11R7.3/src/proto/fixesproto-4.0.tar.bz2    #51=18
wget -c ftp://ftp.simplesystems.org/pub/libpng/png/src/libpng-1.2.33.tar.bz2    #44
wget -c http://xorg.freedesktop.org/releases/X11R7.3/src/lib/libICE-1.0.4.tar.bz2    #45
wget -c http://xorg.freedesktop.org/releases/X11R7.3/src/lib/libSM-1.0.3.tar.bz2    #46
wget -c http://www.cairographics.org/releases/cairo-1.4.14.tar.gz    #47
wget -c http://xorg.freedesktop.org/releases/X11R7.3/src/lib/libXft-2.1.12.tar.bz2    #48
wget -c http://ftp.gnome.org/pub/gnome/sources/glib/2.14/glib-2.14.6.tar.bz2    #49
wget -c http://ftp.gnome.org/pub/gnome/sources/pango/1.18/pango-1.18.3.tar.bz2    #50
wget -c http://xorg.freedesktop.org/releases/X11R7.3/src/lib/libXinerama-1.0.2.tar.bz2    #53
wget -c http://xorg.freedesktop.org/releases/X11R7.3/src/proto/xineramaproto-1.1.2.tar.bz2    #52=22
wget -c http://xorg.freedesktop.org/releases/X11R7.3/src/lib/libXfixes-4.0.3.tar.bz2    #54
wget -c http://mirrors.rootmode.com/ftp.gnupg.org/libgpg-error/libgpg-error-1.0.tar.gz    #55
wget -c ftp://ftp.gnupg.org/gcrypt/libgcrypt/libgcrypt-1.2.3.tar.gz    #56
wget -c http://xorg.freedesktop.org/releases/X11R7.3/src/lib/libXcomposite-0.4.0.tar.bz2    #57
wget -c http://ftp.gnome.org/pub/gnome/sources/atk/1.20/atk-1.20.0.tar.bz2    #58
wget -c http://xorg.freedesktop.org/releases/X11R7.2/src/lib/libXcursor-X11R7.2-1.1.8.tar.bz2    #59
wget -c http://xorg.freedesktop.org/releases/X11R7.3/src/lib/libXcursor-1.1.9.tar.bz2    #59 2nd
wget -c http://xorg.freedesktop.org/releases/X11R7.3/src/lib/libXdamage-1.0.4.tar.bz2    #60
wget -c http://xorg.freedesktop.org/releases/individual/lib/libXdamage-1.1.1.tar.bz2    #61
wget -c http://ftp.gnome.org/pub/gnome/sources/gtk+/2.12/gtk+-2.12.7.tar.bz2    #61 2nd
wget -c http://ftp.gnome.org/pub/gnome/sources/gtk+/2.14/gtk+-2.14.4.tar.bz2    #61
wget -c ftp://ftp.gnome.org/mirror/gnome.org/sources/libglade/2.6/libglade-2.6.3.tar.gz    #62
wget -c http://xorg.freedesktop.org/releases/X11R7.3/src/everything/xtrans-1.0.4.tar.bz2

文章下面有上面的各个tar源码包的连接的出处、以及上面的各个源码包的大集合下载网址,省略你下载的烦恼问题。



4. 参考资料和编译方法:

请参考下面两个网址编译:

(1). http://blog.csdn.net/linuxarmsummary/article/details/22326719

(2). https://forum.ubuntu.com.cn/viewtopic.php?f=97&p=1434090

编译前,请确保你已经安装好ubuntu的各个基本的编译库,和基本gcc环境,请认真按照两个博客的方法编译,特别是第一个博客的方法。

ubuntu 16.04 64bit系统安装32bit库以及编译环境:

我用的是ubuntu64位的系统,现在我们需要编译的是32位的gtk和x,所以必须要先让ubuntu支持32位的编译,下面是如何在ubuntu安装32位编译环境的步骤:

1 确认本机内核架构
dpkg --print-architecture


2 查看是否有多架构支持功能
dpkg --print-foreign-architectures


3 打开多架构支持功能
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get -f dist-upgrade


4 安装32位库
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386
./configure --

设定飞思卡尔的i.MX6的环境变量(下面以我的为例子,各个人的路径不一样)

一般厂家会在给你编译工具等资料的时候,给你一个设定imx6环境变量的脚本:

source /opt/yogurt/i.MX6-PD15.3.0/environment-setup-cortexa9hf-vfp-neon-phytec-linux-gnueabi


5. 源码包下载

如果觉得安按照上面的下载太麻烦,六七十个库的源码,我这里有下载好的源码,下载地址:

http://download.csdn.net/download/mynameislinduan/9958349



6. 编译的注意事项和错误处理:

(1)在编译:cairo, pango, libX11, xorg-server的时候,非常非常容易出错

编译这几个库的时候,非常小心!同时因为版本比较旧,首先,确保按照第一个人的csdn博客的顺序编译;

(2)修改configure文件

第一个链接里面常常有修改configure的,认真按照里面的修改,注意: CFLAGS! LDFLAGS! 和 DEFAULT_DEFAULT_INCLUDE的修改,如果编译出错,多半是因为库文件和include头文件路径没加进去。

(3)PKG_CONFIG_PATH环境变量

PKG_CONFIG_PATH环境变量需要添加正确,必要时候,把你的编译好的库的preifix/lib 加入!

(4)PATH环境变量

PATH环境变量里面最好包含各个bin文件,lib,include文件的路径!否则,可能出现: unknow type name错误 或者 unreferrance 错误,原因是连接或者编译的时候,找不到头文件和库文件。

(5)耐心查看编译信息

当编译出错之后,需要耐心查看错在哪里?错在哪一行?
编译信息 Entering Directory xxx 和 Leaving Directory 会告诉你它们在那里编译出错的。

(6)libxml2编译

编译libxml2的时候,必须要指定zlib,就是要configure的时候–enable-zlib;

(7)xxx.PC文件的修改

出现错误,找不到库,找不到头文件都有可能因是 pkg_config文件的路径错误!
这个错误非常麻烦,需要修改之前的各个编译好的库的安装路径/lib/下的.PC
确定是不是由于x.pc文件的错误,参看编译器编译命令信息,如果出现路径重叠,多半是从这个错误!
修改方法:prefix=/xxxx/xx/xx/xx/x/xx/(你的编译器指定的sysroot路径)去掉修改成: prefix=/
然后在下面的:{libdir}{incdir}等写入对应的/usr/include或者/usr/lib
主要是看你的编译的sysroot路径,编译的时候,.pc文件会被修改,导致真正编译时候是这样的 : arm-xxxxxx-gcc -I/路径1sysroot/路径2编译器路径/usr/include,
这是由于sysroot和.pc文件里面的路径重叠,变成一个错误的路径,导致编译出错!
所以很多时候,每次编译一个库,都要修改对应的安装库路径下/lib/xxx库名.pc文件的路径!

(8)configure文件

配置的时候,我们可以加入头文件路径和LDFLAGS,CFLAGS环境变量,让编译依赖找到对于那个的库和对应的头文件。可以在configure的时候加入arm-linux.cache,具体参看第两个博客!
由于每个库源码编译方法可能存在不一样的顺序,未必个个都是简单的confiure 和 make,实在不行,可在configure的时候,加入多个-I/xxx, 和-L/xxx , make的时候可以指定configure有的变量,例如make CC=xxxx LDFLAGS=xxx

(9).编译错误

网上找到同样版本的文件替换。



7. 谢谢阅读

交叉编译libxGTK+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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mynameislinduan

你的鼓励是我最大动力写博客不易

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值