- 论坛徽章:
- 0
|
今天完成了minigui的arm+linux移植,做如下总结:
源码包:
libminigui-1.6.2-linux.tar.gz //用于生成库文件
mde-1.6.0.tar.gz //演示程序
minigui-res-1.6.tar.gz //资源包,运行时需要用到的图片和字体等
补充文件:
libpng 的库
libpng12的库
libm 的库
libz 的库
libpopt的库
libjpeg的库
编译器:
arm-linux-3.3.2
minigui有三种运行模式,分别是thread lite standalone ,我编译了两种模式thread 和lite ,thread模式中每个程序都可以单独运行,是默认的运行模式.lite模式是基于客户端/服务器的模式,要先运行服务端的mginit程序后才能执行其他程序.二者编译上的区别主要在configure参数的选择,这里介绍lite模式的编译.
第一步: 编译库文件
1) tar zxvf libminigui-1.6.2-linux.tar.gz 生成libminigui-1.6.2-linux目录.
2) 进入目录执行
make clean //包里面如有编译过,生成的中间文件会影响到后面的编译
./configure --host=arm-linux --enable-lite \
--disable-imegb2312py --disable-imegb2312 \
--prefix=(设定一个安装路径,假设为: /usr/local/minigui)
//这里--disable-imegb2312py --disable-imegb2312两个选项屏蔽了输入法的选择,输入法在此版本中出现不兼容的现象,mginit程序一启动就自动退出了.
make
make install
3) 安装目录下生成了3个文件夹:
etc //里面的MiniGUI.cfg是minigui的配置文件
lib //相关的库文件
include //编译演示程序要用到的头文件
4) lib目录下的库文件包含了大量的调试信息,用arm-linux-strip命令将多余的信息剥去 arm-linux-strip /lib/*
第二步:编译演示程序
1) tar xvf mde-1.6.0.tar.gz 生成mde-1.6.0目录
2) 进入目录修改configure.in文件加入:
CFLAGS="$CFLAGS -I /usr/local/minigui/include -L /usr/local/minigui /lib"
即加入头文件和库的路径
3) 执行
./configure --host=arm-linux --prefix=/usr/local/minigui
//此处的路径与前面的安装路径要一致
make
这个目录里做make install 将不会执行任何操作,所以要手动把各个目录下的执行命令和res目录拷出来.我把这些命令arm-linux-strip 后统一放到了minigui的安装目录下新建的sample目录下,并且保持每个程序和相应的res目录都放在与执行程序同名的文件夹下,mginit目录下还要拷入mginit.rc文件,此文件中限定了执行程序的目录结构.
第三步:安装资源文件
1) tar zxvf minigui-res-1.6.tar.gz生成minigui-res-1.6目录
2) 修改configre.linux中的prefix路径为前面两步的安装路径,CC=arm-linux-gcc AR=arm-linux-ar
3) make install
第四步:移植
1) 将安装目录的etc目录下的MiniGUI.cfg文件做如下修改:
fbcon的显示模式改为800x600,因为我使用的板子上的framebuffer驱动里已经设置了显示模式为800x600要通过vgaout在显示器上显示. mtype的路径改到/dev/input/mouse0这两项都要根据具体的情况来修改.改好后将此文件放到板子的/etc目录下.
2) 将lib目录下的库文件放到/usr/lib目录下,将lib/minigui目录放到/usr/local/lib下,程序启动时会到/usr/lib目录下寻找相关的库,而资源文件的位置/usr/local/lib是在MiniGUI.cfg中指定的,可以修改.
3) /usr/lib目录下还需要放入上面列出的补充库文件,这些库在程序运行时会需要用到,每一个库可以在网上下到源码包自己交叉编译生成库文件后拷入板子的/usr/lib目录下,拷入之前最好先做个arm-linux-strip可以大大减小文件的体积.我使用的编译服务器上已经有了交叉编译好的这些库,所以我只是将它们拷下来用就可以了.
4) 将演示程序放到板子的任意位置,比如/usr/local/minigui/sample保持目录结构不变
5) 进入mginit目录(注意,启动mginit程序必须进入到mginit程序放置的目录中,并且其相关的res文件夹要与mginit程序放在同一个目录下,因为mginit启动时会在当前目录下寻找资源文件,如果找不到,程序一启动就会自动退出)后台运行mginit程序 ./mginit & ,配置无误,一切正常的话,应该出现程序一个窗口界面,再到别的目录下去运行程序会在窗口中弹出运行程序的界面,这一步由于输入法的不兼容.一直出现mginit一启动就崩溃的现象,后来在程序中将一处输入法的相关函数注释掉才解决问题,不使用输入法应该有三种方法,一是在程序中注释掉相关程序,一是修改由前面库源码包生成的include/minigui/config.h文件,将其中输入法的定义去掉,一是在做库和头文件的生成的时候在configure中用参数将输入法屏蔽,最后一种方法才是正当途径J
至此minigui移植成功,其间会遇到的一些问题可以查看minigui的用户手册或在网上搜到相关的答案,minigui的移植已经比较成熟了.
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/42897/showart_410704.html |
|