最近使用freescale的嵌入式方案编写qt应用程序,配置交叉编译环境花费了好大时间,网上的ltib教程不完全,东拼西凑的,终于成功编译。在此分享 兼保存。
1 资源准备
硬件:i.mx53
环境:ubuntu 12.04.4,
ltib源代码:L2.6.35_11.05.01_ER_source_bundle.tar.gz
LTIB补丁:ubuntu-ltib-patch.tgz,该补丁主要用于解决LTIB在Ubuntu 12.04下lkc等包的安装问题
2 安装支持库
sudo apt-get install patch g++ rpm zlib1g-dev m4 bison libncurses5-devlibglib2.0-dev gettext build-essential tcl intltool libxml2-dev liborbit2-devlibx11-dev ccache flex uuid-dev liblzo2-dev xsltproc libfreetype6-devlibfontconfig1-dev libdbus-glib-1-dev libgtk2.0-dev libxtst-dev orbit2 libghc6-gtk-dev
3 修复安装包
如使用已修复包,跳过此步
3.1 修复Ltibutils.pm
Ltib目录下的bin/Ltibutils.pm
用vi或者gedit打开LTIB目录/bin/Ltibutils.pm,具体修改如下,
563行改为:'glibc-devel' => sub { -f'/usr/lib/i386-linux-gnu/libm.so' || -f '/usr/lib64/libz.so' },
583行改为:zlib => sub { my @f =(glob('/usr/lib/i386-linux-gnu/libz.so*'),
584行改为:glob('/lib/i386-linux-gnu/libz.so*'),
保存退出;
3.2 修复ltib文件
修改ltib目录下的ltib文件,第2388行删除--force-debian参数
3.3 修复mux_server.spec
Ltib目录下的/dist/lfs-5.1/mux_server目录:
mux_server.spec文件的25行修改为mux_server.c -o mux_server-lpthread
3.4 修复lkc-1.4-lxdialog.patch
/opt/freescale/pkgs目录下:
将lkc-1.4-lxdialog.patch里面的3112行的
mconf_LIBS= -lncurses
mconf: $(mconf_OBJ) $(lxdialog_LIB)
$(CC) $(LDFLAGS) $(mconf_LIBS) $^ -o S@
修改为
mconf_LIBS=
mconf: $(mconf_OBJ) $(lxdialog_LIB)
$(CC) $(LDFLAGS) $(mconf_LIBS) $^ -o S@ -lncurses
生成md5文件
md5sum lkc-1.4-lxdialog.patch >lkc-1.4-lxdialog.patch.md5
3.5 修复mtd_utils
/opt/freescale/pkgs/下的mtd-utils-201006.tar.bz2,需先解压修改,在重新打包
/opt/freescale/pkgs/mtd-utils/ubi-utils/old-utils/src
修改如下:
目录下的error.c第72行函数里需要将77与83行注释掉
pfi2bin.c 319行函数处理ret变量,注释第322行,第327行改为fwrite(buf, 1, size, f);
libubigen.c文件中的204行处理不正确的++语法,改为(u->v->copy_flag)++;
生成md5文件
md5sum mtd-utils-201006.tar.bz2 > mtd-utils-201006.tar.bz2.md5
3.6 修改fontconfig 包
进入"ltib/dist/lfs-5.1/fontconfig/fontconfig.spec",
找到 ./configure行
改为:
./configure --prefix=%{_prefix} --host=$CFGHOST--build=%{_build} \
--with-arch=$GNUTARCH--sysconfdir=%{_sysconfdir} \
--with-freetype-config=$DEV_IMAGE/usr/bin/freetype-config
make
3.7 修改gst-plugins-bad
下载gst-plugins-bad-0.10.11.tar.bz2,
http://bitshrine.org/gpp/gst-plugins-bad-0.10.11.tar.bz2
拷贝至/opt/freescale/pkgs/
生成md5文件
md5sum gst-plugins-bad-0.10.11.tar.bz2 > gst-plugins-bad-0.10.11.tar.bz2.md5
3.8 安装包内自带补丁
这里指的是L2.6.35_11.05.01_ER_source_bundle里的Linux 1105 patchs.tar.gz
1) 解压Linux 1105 patchs.tar.gz
2) 将根目录下的kernel-2.6.35.spec.in 和 u-boot.spec.in拷贝至ltib目录下的/config/platform/imx
3) 拷贝kernel_patches_based_on_11.05.01下的所有文件至/opt/Freescale/pkgs
4) 拷贝uboot-imx_patches_based_on_11.05.01下的所有文件至 /opt/Freescale/pkgs
5) 拷贝根目录下的imx-lib.spec至ltib目录下的/dist/lfs-5.1/mxc-misc/,并拷贝imx-lib_patches_based_on_11.05.01下的所有文件至/opt/Freescale/pkgs
4 配置安装包
修改visudo以增加用户权限,终端下打开/usr/sbin/visudo,增加如下命令:
uu ALL = NOPASSWD: /usr/bin/rpm, /opt/freescale/ltib/usr/bin/rpm
uu为Ubuntu所设置的个人用户名,非root
解压并进入L2.6.35_11.05.01_ER_source,执行./install
选择安装的路径(不含ltib)
5 安装补丁ubuntu-ltib-patch.tgz
解压ubuntu-ltib-patch.tgz至litb同级目录,解压,进入到补丁所在文件夹,输入命令:
sh install-patches.sh
完成后会提示DONE,会有一处错误,不用理。
6 配置/usr/include
进入/usr/include,
运行一下命令
cd/usr/include
sudo ln -sf i386-linux-gnu/sys ./sys
7 修改freetype头文件位置
cd /usr/include/
sudo ln -s freetype2/freetype/ freetype
8 安装ltib
进入ltib目录,执行./ltib