Minigui在uClinux 上的移植心得
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Minigui在uClinux 上的移植心得
1、下载minigui源码
1.3.3
1.3.3
这两个包的下载需要你在上注册过才可以下载,免费注册的,自己去下吧
1.3.0 图形界面程序
1.3.0 一些小例子
把源码文件复制到/home/liu/minigui目录下,解开源码
[root@localhost minigui]#tar zxvf 1.3.3 minigui]#tar zxvf 1.3.3 minigui]#tar zxvf 1.3.0 minigui]#tar zxvf 1.3.0环境的搭建
首先你需要一个Linux 环境,我安装的是RedHat 安装时记着选everything,这样可以避免到时候编译少了东西。
这里搭建的环境是让MiniGUI 在你的PC 上可以跑起来,这样以后你开发程序就可以只在PC 上开发,调试好,最后交叉编译一下放到板子上就行了。
把 1.3.3 解开
[user]# tar zxf
[user]# tar zxf
编译libminigui ,这个是minigui 运行所必需的库文件,必须编译成功[user]# cd libminigui-1.3.3
[user]# ./configure . yes
checking for pthread library... yes
checking for TT_FreeType_Version in -lttf... yes
checking for T1_InitLib in -lt1... no
checking for jpeg_std_error in -ljpeg... yes
checking for png_check_sig in -lpng... yes
其中–lttf –lpng 必须是yes ,不然后面你的程序肯定会有问题,如果这里不是yes 的话,肯定是你的Redhat 9 安装不对,告诉过你安装时选everything ,你选了吗
其中ttf 库是对TrueType 字体的支持,png 库是对png 图形的支持,MiniGui 里都需要这两个,在后面为板子交叉编译的时候也需要这两个,不然你的程序跑不起来,切记切记。
好了,现在通过了,下面是编译了
[user]# make
接来来就是漫长的等待了,让它慢慢的编译吧
注:在make时,可能会出现如下错误::
/usr/include/asm/:6:2: warning: #warning using private kernel header; include <> instead!
:265:47: missing terminating " character
:267:25: missing terminating " character
make[3]: *** [] Error 1
make[3]: Leaving directory `/opt/st2410/libminigui-1.3.3/src/newgal'
make[2]: *** [install-recursive] Error 1
make[2]: Leaving directory `/opt/st2410/libminigui-1.3.3/src/newgal'
make[1]: *** [install-recursive] Error 1
make[1]: Leaving directory `/opt/st2410/libminigui-1.3.3/src'
make: *** [install-recursive] Error 1
解决方法:
修改文件,将265 line
__asm__ __volatile__ ("
call _copy_row
"
: "=&D" (u1), "=&S" (u2)
: "0" (dstp), "1" (srcp)
: "memory" );
修改为:
__asm__ __volatile__ (
"call _copy_row"
: "=&D" (u1), "=&S" (u2)
: "0" (dstp), "1" (srcp)
: "memory" );
[user]# su 1.3.33.0.0] 好几个目录,里面有相应的文件
检查/usr/local/include 里面是不是多了一个minigui 目录,/usr/local/include/minigui 时面好多的.h 文件,如下:
如果这里检查没有这些东西的话,那你前面的步骤肯定有问题,自己检查一下吧。
首先,修改你的/etc/ 文件,在里面最后新加入一行/usr/local/lib
然后执行[Root]# ldconfig
OK !
Libminigui 配置
在System Wide Options 里如下:
[*] Build MiniGUI-Lite configure
[user]# make
[user]# make install
在这个过程中如果出现error while loading shared libraries: cannot open shared object file
说明你的系统少了这个库,还是回去检查一下,你安装时Redhat 时是否选了everything ,或者在实际操作的过程中,这个库有可以被误删除掉,我就出现过,这时候你可以google 一下,输入redhat 9 ,应该就可以搜到相应的rpm 包,
安装时
[root]# rpm –i --force [你的包名] 就OK了
这里有个下载地址,可以试试,我是用讯雷下载的,别的工具没试过
注意:在你后面的操作过程中有可能会导致丢失,这时候只要重装一下就OK 了
解决了这个问题后重复安装过程
[user]# ./configure
[user]# make
[user]# make install
OK ,环境搭建好了,下面是测试了:)
还记得前面让你下载的 1.3.0 这个包吧,这个就是一些例子,现在试试吧:)[user]# tar zxf
[user]# ./configure
[user]# make
[user]# cd src
看看src 目录下是不是已经编译出可执行文件来了
现在来执行一下吧,首先把qvfb 加到你的可执行路径中去
[user]# cd $HOME
[user]# vi .bashrc
在.bashrc 最后面加上一句
export PATH="$PATH:/sbin:/usr/local/arm/"
保存退出,这里面有些路径是为以后用的,比如/usr/local/arm/ ,先加上吧:)[user]# source .bashrc 1.3.0helloword
OK ,这个时候你应该可以看到在qvfb 中的执行效果了吧,记住:一定要先运行qvfb ,并且设置qvfb ,然后再运行你的程序,而且qvfb 每重启一次就需要重新设置一下,真麻烦
OK 你的PC 环境搭建完毕了,你现在可以在PC 上开发你的程序,并且编译,并在qvfb 中执行,等完全验证它是正确的了,把它交叉编译一下,放到板子上去就可以了,呵呵:)
交叉编译minigui库
修改scripts/mkconfig,找到
#echo "CFLAGS=\"$CFLAGS\" \\" >> $CONFIG_MNU
#echo "LDFLAGS=\"$LDFLAGS\" \\" >> $CONFIG_MNU
用
echo "CFLAGS=\"$CFLAGS\" \\" >> $CONFIG_MNU
echo "LDFLAGS=\"$LDFLAGS\" \\" >> $CONFIG_MNU
替换
[root@localhost libminigui-1.3.3] make menuconfig
保存退出,则生成config-mnu文件,编辑,将
#!/bin/sh
# Automatically generated by make menuconfig.
rm -f
CC=arm-elf-gcc \
CFLAGS="-I/home/liu/uClinux-040408/uClibc/include -Dlinux -D__linux__ -D__uClinux__ -Dunix " \
LDFLAGS="-Wl,-elf2flt -static -Wl,-move-rodata -L/home/liu/uClinux-040408/lib/uClibc/lib \
-L/home/liu/uClinux-040408/ -L/usr/local/arm-elf/lib \
-lc -lm -lpthread" \
./configure --prefix=/usr/local/arm-elf \
--build=i686-pc-linux-gnu \
--host=arm-elf-linux \
--target=arm-elf-linux \
--disable-shared \
--disable-lite \
--disable-standalone \
--enable-incoreres \
--disable-flatstyle \
--enable-newgal \
--disable-nativegal \
--disable-galcommlcd \
--enable-galfbcon \
--enable-adsial \
--disable-micemoveable \
--disable-cursor \
--disable-fblin1r \
--enable-fblin8 \
--disable-fblin16 \
--disable-fblin32 \
--disable-textmode \
--enable-dummyial \
--disable-mc68x328ial \
--disable-nativeial \
--disable-qvfbial \
--disable-qpfsupport \
--disable-ttfsupport \
--disable-type1support \
--disable-latin9support \
--disable-gbksupport \
--disable-big5support \
--disable-unicodesupport \
--disable-savebitmap \
--disable-imegb2312 \
--disable-imegb2312py \
--disable-aboutdlg \
--disable-savescreen \
--disable-grayscreen \
--enable-tinyscreen \
--enable-video-fbcon \
--disable-video-qvfb \
--disable-nativegalqvfb \
--with-osname=uclinux
覆盖原来内容
[root@localhost libminigui-1.3.3] make
[root@localhost libminigui-1.3.3] make install
[root@localhost libminigui-1.3.3] ldconfig
可以进入/usr/local/arm-elf目录中,你会看到新增加了etc和lib两个文件夹,这两个文件夹就是我们刚才用arm-elf-gcc交叉编译minigui的函数库所产生的结果,以后编译在目标板中运行的应用程序时,就会对这两个文件夹里的内容进行编译,从而产生适合于在arm开发板中运行的应用程序.
交叉编译minigui-res-1.3.3
进入minigui-res-1.3.3文件夹内,修改,在prefix = $(TOPDIR)/usr/local/后添加我们的交叉编译安装目录arm-elf,即prefix = $(TOPDIR)/usr/local/arm-elf.
[root@localhost minigui-res-1.3.3] make install
交叉编译mde-1.3.0
[root@localhost minigui-res-1.3.3] cd 建立文件
#! /bin/sh
CC=arm-elf-gcc \
CFLAGS="-I/home/liu/uClinux-040408/uClibc/include -I/usr/include \
-I/usr/local/arm-elf/include -Dlinux -D__linux__ -D__uClinux__ -Dunix " \ LDFLAGS="-Wl,-elf2flt -static -L/home/liu/uClinux-040408/lib/uClibc/lib \
-L/home/liu/uClinux-040408/ -L/usr/local/arm-elf/lib \
-lpthread -L/usr/lib -lc -lm" \
./configure --prefix=/usr/local/arm-elf \
--target=arm-elf-linux \
--host=arm-elf-linux \
-exec-prefix=/usr/local/arm-elf \
--enable-static \
--disable-lite
执行文件
[root@localhost minigui-res-1.3.3] sh
修改各子目录下的Makefile文件
将
LDFLAGS = -Wl,-elf2flt -static -L/home/liu/uClinux-040408/lib/uClibc/lib -L/home/liu/uClinux-040408/ -L/usr/local/arm-elf/lib -lpthread -L/usr/lib -lc -lm -lminigui
LIBS = -lm -lpthread –lminigui
替换:
LDFLAGS = -Wl,-elf2flt -static -L/home/liu/uClinux-040408/lib/uClibc/lib -L/home/liu/uClinux-040408/ -L/usr/local/arm-elf/lib -lpthread -L/usr/lib -lc -lm LIBS = -lpthread –lminigui
修改各子目录下的Makefile文件
将:
COMMON_SUBDIRS = notebook bomb housekeeper same russia controlpanel vacs \
fontdemo dlgdemo ctrldemo picview
替换:
COMMON_SUBDIRS = notebook tools bomb housekeeper same russia controlpanel vacs \
fontdemo dlgdemo ctrldemo picview
注:之所以将tools去掉,因为tools编译有错误,暂时无法解决
编译
[root@localhost minigui-res-1.3.3]make
交叉编译mg-samples-1.3.0
建立文件
#! /bin/sh
CC=arm-elf-gcc \
CFLAGS="-I/home/liu/uClinux-040408/uClibc/include -I/usr/include \
-I/usr/local/arm-elf/include -Dlinux -D__linux__ -D__uClinux__ -Dunix " \ LDFLAGS="-Wl,-elf2flt -static -L/home/liu/uClinux-040408/lib/uClibc/lib \
-L/home/liu/uClinux-040408/ -L/usr/local/arm-elf/lib \
-lc -lm" \
./configure --prefix=/usr/local/arm-elf \
--host=arm-elf-linux \
--target=arm-elf-linux \
-exec-prefix=/usr/local/arm-elf \
--enable-static \
--disable-lite执行文件
[root@localhost mg-samples-1.3.0] sh
修改src/目录下的Makefile文件
将
LDFLAGS = -Wl,-elf2flt -static -L/home/liu/uClinux-040408/lib/uClibc/lib -L/home/liu/uClinux-040408/ -L/usr/local/arm-elf/lib -lc -lm
LIBS = -lminigui -lm -lpthread –lc
替换:
LDFLAGS = -Wl,-elf2flt -static -L/home/liu/uClinux-040408/lib/uClibc/lib -L/home/liu/uClinux-040408/ -L/usr/local/arm-elf/lib -lc -lm
LIBS = -lminigui -lpthread
编译
[root@localhost mg-samples-1.3.0]make
移植结束,但还没有测试。