本文章信息
作 者 资 料
作 者 主 页
我 要 收 藏
打 包 下 载
发 表 主 题
转 发 该 文
 >> 合璧操作系统论坛MiniGUI 1.6.10 GPL 版本MiniGUI 1.3.3 移植详解

MiniGUI 1.3.3 移植详解

(这条文章已经被阅读了 44759 次) 时间:2006/11/08 11:07am  来源:singlewolfyu


[这个贴子最后由singlewolfyu在 2007/08/01 03:41pm 第 2 次编辑]

本文是用 Word 写的,本来想当成附件发上来,结果系统说“发贴数大于10篇才能上传附件!”,让我暴汗~~~~~
所以就直接 Copy 上来了,有Word 中有一些加红,加黑表示要注意的地方这里显示不出来,大家将就着看吧,呵呵,有什么错误希望大家指出,谢谢

MiniGUI 1.3.3 移植详解

作者:大漠孤狼   E-Mail:yuqiang0107@126.com

最近移植了 MiniGUI 1.3.3 到一个开发板上,中间遇到许多问题,在论坛上发问题,结果也没多少人回我,就算偶尔有回的,基本上回答也没有什么用,网上找不到一个完整的移植文章,所以就决定把自己这次移植摸出来的一些方法写出来,给像我一样的小菜鸟做个参考吧。本文不教你怎么写驱动,只是教怎么样在最短的时候在你的PC机上搭建起开发环境,同时在你的板子上跑起MiniGUI 来,这样你就可以在PC上开发好程序,调试完毕,然后交叉编译一下,直接Copy到板子上就可以了。

首先,你需要下载的MiniGUI 的包:
http://www.minigui.com/download/libminigui-1.3.3.tar.gz    
http://www.minigui.com/download/minigui-res-1.3.3.tar.gz      
这两个包的下载需要你在www.minigui.com  上注册过才可以下载,免费注册的,自己去下吧
http://www.minigui.com/downloads/minigui13/mde-1.3.0.tar.gz    图形界面程序
http://www.minigui.com/downloads/minigui13/mg-samples-1.3.0.tar.gz  一些小例子

好,首先就下载这几个包吧,后面还有需要下载的包,后面再说

1.PC环境的搭建

首先你需要一个 Linux 环境,我安装的是 RedHat 9.0  安装时记着选 everything ,这样可以避免到时候编译少了东西。这里搭建的环境是让 MiniGUI 在你的 PC 上可以跑起来,这样以后你开发程序就可以只在 PC 上开发,调试好,最后交叉编译一下放到板子上就行了。后面会讲怎么为板子编译MiniGUI ,耐心的看吧:)

首先建立自己的开发目录

[Root]#  mkdir /opt
[Root]#  cd /opt
[Root]# mkdir st2410             //这个是我的板子,
[Root]# chmod 777 st2410         //给一般用户操作权限
[user]#  cd /opt/st2410           //进到目录中去,在这个目录下工作,用普通用户来工作

把 libminigui-1.3.3.tar.gz 解开
[user]# tar  zxf  libminigui-1.3.3.tar.gz
[user]# tar zxf minigui-res-1.3.3.tar.gz

编译 libminigui  ,这个是 minigui 运行所必需的库文件,必须编译成功
[user]# cd libminigui-1.3.3
[user]# ./configure                 //最简单的编译方式,让它自己去配置 ,这里采用缺省的Thread 模式而不是Lite模式,因为这种方式在 PC 机上使用最方便,后面移到板子上再改成 Lite 模式即可

注意屏幕上的输出,特别是下面几条

checking for FrameBuffer console support... 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
接来来就是漫长的等待了,让它慢慢的编译吧,呵
[user]#  su         //切到 Root 用户权限下,不然安装时没法把文件写到你的 /usr/local 目录下
[Root]# make install

好了,库安装完毕,下面是安装资源
[Root]# cd /opt/st2410/minigui-res-1.3.3
[Root]# make install

OK,基本的安装完成了,现在检查一下
看看在你的目录  /usr/local/lib 下是不是有以下文件
libmgext-1.3.so.3 -> libmgext-1.3.so.3.0.0
libmgext-1.3.so.3.0.0
libmgext.a
libmgext.la
libmgext.so -> libmgext-1.3.so.3.0.0
libminigui-1.3.so.3 -> libminigui-1.3.so.3.0.0
libminigui-1.3.so.3.0.0
libminigui.a
libminigui.la
libminigui.so -> libminigui-1.3.so.3.0.0
libvcongui-1.3.so.3 -> libvcongui-1.3.so.3.0.0
libvcongui-1.3.so.3.0.0
libvcongui.a
libvcongui.la
libvcongui.so -> libvcongui-1.3.so.3.0.0

里面还有一个目录 minigui ,可以进到里面去看,分别为 minigui/res/ [bmp , cursor,icon ,…..] 好几个目录,里面有相应的文件
检查 /usr/local/include  里面是不是多了一个 minigui 目录,/usr/local/include/minigui 时面好多的 .h 文件,如下:

common.h  control.h  endianrw.h  fixedmath.h  mgext.h    mywindows.h  vcongui.h
config.h  dti.c      filedlg.h   gdi.h        minigui.h  skin.h       window.h

如果这里检查没有这些东西的话,那你前面的步骤肯定有问题,自己检查一下吧。


首先,修改你的 /etc/ld.so.conf 文件,在里面最后新加入一行 /usr/local/lib
然后执行 [Root]#  ldconfig
OK !


[Root]# vi /usr/local/etc/MiniGUI.cfg

在里面找到

[system]
# GAL engine
#gal_engine=fbcon
gal_engine=qvfb   //这里修改

# IAL engine
#ial_engine=console
ial_engine=qvfb    //这里修改

mdev=/dev/mouse
mtype=IMPS2

[fbcon]
defaultmode=1024x768-16bpp

[qvfb]
defaultmode=640x480-16bpp    //这里修改
display=0

保存一下,OK了!

现在你需要安装一个 qvfb ,因为 Redhat 9 里面没有,从下面地址下载
http://www.minigui.com/downloads/dep-libs/qvfb-1.0.tar.gz

老方法:
[user]# tar zxf qvfb-1.0.tar.gz
[user]# cd qvfb-1.0
[user]# ./configure
[user]# make
[user]# make install

在这个过程中如果出现 error while loading shared libraries: libqt-mt.so.3: cannot open shared object file
说明你的系统少了 libqt-mt.so.3 这个库,还是回去检查一下,你安装时Redhat 时是否选了 everything ,或者在实际操作的过程中,这个库有可以被误删除掉,我就出现过,这时候你可以 google 一下 ,输入 libqt-mt.so.3 redhat 9 ,应该就可以搜到相应的 rpm 包,安装时

[root]# rpm –i --force [你的包名]   就OK了  

这里有个下载地址,可以试试,我是用讯雷下载的,别的工具没试过
ftp://ftp.pbone.net/mirror/www-ccrma.stanford.edu/planetccrma/mirror/redhat/linux/planetccrma/9/en/os/i386/qt33-3.3.3-0.1.rh90.ccrma.i386.rpm

注意:在你后面的操作过程中有可能会导致 libqt-mt.so.3 丢失,这时候只要重装一下就OK了

解决了这个问题后重复安装过程
[user]# ./configure
[user]# make
[user]# make install

OK ,环境搭建好了,下面是测试了:)

还记得前面让你下载的 mg-samples-1.3.0.tar.gz 这个包吧,这个就是一些例子,现在试试吧:)
[user]# tar zxf mg-samples-1.3.0.tar.gz
[user]# ./configure
[user]# make
[user]# cd src

看看 src 目录下是不是已经编译出可执行文件来了

现在来执行一下吧,首先把 qvfb 加到你的可执行路径中去
[user]# cd $HOME
[user]# vi .bashrc

在 .bashrc 最后面加上一句
export PATH="$PATH:/sbin:/usr/local/arm/2.95.3/bin:/usr/local/bin:/usr/local"  
保存退出,这里面有些路径是为以后用的,比如 /usr/local/arm/2.95.3/bin ,先加上吧:)
[user]# source .bashrc   //让它执行一下,当然你也可以选择重启一下电脑,效果是一样的,呵

执行例子程序:
[user]# qvfb &           //在图形界面下执行,呵,别告诉我你只在命令行工作啊 :)
在 qvfb 中选 File  Configure  640x480 VGA   16bit   ,这样看起来舒服
[user]#  cd /opt/st2410/ mg-samples-1.3.0/src
[user]# ./helloword

OK ,这个时候你应该可以看到在 qvfb 中的执行效果了吧,记住:一定要先运行 qvfb ,并且设置 qvfb ,然后再运行你的程序,而且qvfb 每重启一次就需要重新设置一下,真麻烦

OK 你的 PC 环境搭建完毕了,你现在可以在 PC 上开发你的程序,并且编译,并在 qvfb  中执行,等完全验证它是正确的了,把它交叉编译一下,放到板子上去就可以了,呵呵:)


MiniGUI 还有一种执行方式,就是在 Console 下在 Framebuffer 上执行,这种方式太麻烦,在PC 上不推荐,你还是用 qvfb 执行吧,方便,呵

在FrameBuffer 上执行

修改 /usr/local/etc/MiniGUI.cfg 文件,如下

[system]
# GAL engine
gal_engine=fbcon
  //这里修改

# IAL engine
ial_engine=console
  //这里修改

mdev=/dev/mouse
mtype=none   //这里改成none,因为经常鼠标不正常

[fbcon]
defaultmode=1024x768-16bpp

[qvfb]
defaultmode=640x480-16bpp    
display=0



重启动你的 RedHat 9 ,在出现 Grub 的时候按 E 键,在 kernel =…..      这一行的最后加入  vga=0x317  ,然后 Enter ,然后在 kernel=…  这一行上按 b  就可以了,这时候可以在启动时看到一个小企鹅的图标,OK

进去后,直接在 例子程序的目录下执行 ./helloword  就可以了 :)



2.为你的实验板进行交叉编译

OK,PC机的开发环境已经建立好了,下面就是要移植到我们的板子上去了,这里不介绍怎么移植 Linux 系统,假设你已经有一个可以在板子上跑的 Linux 系统了,并且已经有一个可以用的根文件系统了,并且已经有了板子相对应的LCD的驱动程序,这里介绍怎么在你的根文件系统里加上 MiniGUI ,使得你的板子有图形界面的显示。

要交叉编译,首先就得有交叉编译器,这里介绍 arm 板的交叉编译。不要自己去编译,直接去下载个就行了。
ftp://ftp.arm.linux.org.uk/pub/linux/arm/toolchain/cross-2.95.3.tar.bz2
记住这个 ftp ,最好的 arm 工具下载站,

下载回来,有35Mb,呵

安装交叉编译工具:
[Root]# mkdir  –p  /usr/local/arm
[Root]# cd /usr/local/arm
[Root]# tar jxf  cross-2.95.3.tar.bz2   //把工具直接解到压缩到这个目录下就安装完成了,简单吧:)

解压缩后生成一个 2.95.3 目录,里面在就是工具
记住,这时候的gcc为 2.95.3/bin/arm-linux-gcc   而它的 include 为 2.95.3/arm-linux/include ,对应的 lib 为 2.95.3/arm-linux/lib

也就是说,你如果用 arm-linux-gcc 编译程序的话,它缺省的就找 2.95.3/arm-linux/include   2.95.3/arm-linux/lib  两个目录,而不是 /usr/include ,所以如果你要加什么 .h  .a .so 文件话,记着一定是加到这两个目录下去,不然编译器会告诉你找不到这些东西的

把可行程序的路径加入到 PATH 中去,还记得前面说过的改 .bashrc 文件吗?

[user]# cd $HOME
[user]# vi .bashrc

在 .bashrc 最后面加上一句
export PATH="$PATH:/sbin:/usr/local/arm/2.95.3/bin:/usr/local/bin:/usr/local"  

[user]# source .bashrc

OK ,交叉编译工具安装完了,够简单吧:)

MiniGUI 的编译需要一些库文件,缺省我们的 gcc 基本上都有这些库文件,所以不需要安装,可是现在要交叉编译了,交叉编译器可是不带这些库文件的,所以我们得首先自己编译这些库文件装到交叉编译器中去。

注意一点:库不一定要装最新的,库版本太新,MiniGUI 有可能不认识,像jpeg 库和 ttf 库就是这样,太新了反而用不了,所以要注意版本,以下的库都是我验证过可以和MiniGUI一起工作的,其它版本的库没试过,不保证能正确通过:)

首先安装 zlib 库,这个是后面的库的编译基础。
http://www.zlib.net/zlib-1.2.3.tar.gz  400多K,去下载吧,

下载到目录 /opt/st2410 下
[user]# tar zxf zlib-1.2.3.tar.gz

由于 zlib 库的configure 脚本不支持交叉编译选项,只好自己动用了,手动临时把 gcc 修改成指向我们的交叉编译器 arm-linux-gcc

[Root]# cd /usr/bin
[Root]# mv gcc gcc_back
[Root]# ln -s /usr/local/arm/2.95.3/bin/arm-linux-gcc ./gcc
[Root]# mv ld ld_back
[Root]# ln -s /usr/local/arm/2.95.3/bin/arm-linux-ld ./ld

OK ,修改完成后回到 /opt/st2410/zlib-1.2.3 目录下
[user]#  ./configure --prefix=/usr/local/arm/2.95.3/arm-linux/ --shared  
注意:这里配置指向 /usr/local/arm/2.95.3/arm-linux/ 目录,会自动安装在 /usr/local/arm/2.95.3/arm-linux/ [include,lib] 目录下,千万不要装错目录了,不然后面会找不到这个库的
[user]#  make
[Root]# make install

安装完后检查一下目录 /usr/local/arm/2.95.3/arm-linux/ [include,lib] ,假如 include 中没有 zlib.h 之类的头文件,lib 中没有 libz.so.1.2.3 ,那就自己手动拷到这些目录下去,记着拷的时候把所有的 *.h  都需要拷过去,在拷库的时候用 cp –a libz.* /…./lib  就行,要用上 –a 选项


记着把刚才改过的 gcc 再改回去,不然后面会出错的!!!!!


安装 png 库,这个是用来显示 png 图形的,MiniGUI 里很多图都是 png 的,如果没有这个库,你的 MiniGUI 将无法正常工作,切记切记!

http://superb-east.dl.sourceforge.net/sourceforge/libpng/libpng-1.0.10rc1.tar.gz

还是那句话,库不要用最新的,最新的容易有问题,用这个老一点的就没问题了,呵

[user]# tar zxf libpng-1.0.10rc1.tar.gz
[user]# cd libpng-1.0.10rc1

Libpng 不提供有效的 configure 脚本,所以只好自己动手改 Makefile 文件了

[user]# cp scripts/makefile.linux  Makefile   //把 Scripts  下的一个 makefile 拷出来自己动手改
[user]# vi Makefile    // 自己动手改

CC=arm-linux-gcc    //修改这里

# where "make install" puts libpng.a, libpng.so*, png.h and pngconf.h
prefix=/usr/local/arm/2.95.3/arm-linux     //修改这里

# Where the zlib library and include files are located
#ZLIBLIB=/usr/local/lib
#ZLIBINC=/usr/local/include
ZLIBLIB=/usr/local/arm/2.95.3/arm-linux/lib   //修改这里
ZLIBINC=/usr/local/arm/2.95.3/arm-linux/include   //修改这里

好了,保存,然后去编译吧

[user]#  make
[user]#  make install

如果有错误,检查你前面的步骤哪个没做对 :) 尤其是 zlib 的安装

还是前面说的,检查 /usr/local/arm/2.95.3/arm-linux/ [include,lib] 目录中有成功安装否,如果没有安装成功,那就自己把编译出来的东西拷过去。记着,*.h 和 .so 的文件都要拷。


OK,现在来安装 jpeg 库

ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6b.tar.gz    自己去下载,速度暴慢

[user]# tar zxf jpegsrc.v6b.tar.gz
[user]# cd jpeg-6b
[user]# ./configure –help    //可以查看它的配置选项

首先在本机上编译一下,主要是它的 configure 文件设计得有问题,得先用 gcc 编译一个 dummy.c 的文件,然后才能后面编译,不然的话就会出现 libtool 找不到之类的错误

[user]# ./configure --enable-shared --enable-static

本机正常编译通过以后,[user]# make clean 清除掉,然后执行交叉编译

一般情况下用 [cdp@cdpserver jpeg-6b]$ ./configure --prefix=/usr/local/arm/2.95.3/arm-linux/ --host=arm-linux --enable-shared --enable-static

--host=arm-linux  来指定交叉编译选项,可是这里死活它不认,所以改用别的方法,如下

[user]# ./configure --prefix=/usr/local/arm/2.95.3/arm-linux/ CC=arm-linux-gcc --enable-shared --enable-static

[user]# make

安装前需要在 arm-linux 下建个目录,不然安装会出错

[Root]# mkdir –p /usr/local/arm/2.95.3/arm-linux/man/man1
[Root]# make install    // OK 了

一样,自己去检查一下安装是否成功 :)


最后安装 libttf 库,这个是 TrueType 字体的支持库,用来显示文字的。

http://nchc.dl.sourceforge.net/sourceforge/freetype/freetype-1.3.1.tar.gz

注意:MiniGUI 的文档说只支持 1.3.1 版本的 ttf 库,不要把版本弄错了 :)

这个库装起来最麻烦,全部自己手动编译,安装,下面一步一步来做吧:)

[user]# tar zxf  freetype-1.3.1.tar.gz       //老一套
[user]# cd freetype-1.3.1   //进到目录里去
[user]# mkdir –p /opt/st2410/libttf/extend   // 自己另外建立一个目录
[user]# cp freetype-1.3.1/lib/*  freetype-1.3.1/lib/arch/ansi/*  libttf/   //把有用的东西拷出来
[user]#cp freetype-1.3.1/lib/extend/*  libttf/extend/    把 extend 目录下的文件也拷出来

注意 cp 命令不要用 –r 选项,因为会把一些没用的东西出拷出来的

拷贝完成了,现在来自己手动编译了

[user]# cd libttf
[user]# arm-linux-gcc -c -fPIC -O2 freetype.c         //不要奇怪,对,我们只要编译这一个 .c 文件,因为它包括了其它所有的 .c 文件了,你可以自己查看它的内容  
[user]# arm-linux-gcc -c -fPIC -O2 -I./  extend/*.c   把 extend 下所有的 .c 文件全部编译
[user]# arm-linux-gcc --shared -o libttf.so *.o    生成最后的动态链接库,OK了

现在手动安装,得自己建立一下目录

[Root] mkdir –p /usr/local/arm/2.95.3/arm-linux/include/freetype1/freetype

[Root] cp *.h  extend/*.h   /usr/local/arm/2.95.3/arm-linux/include/freetype1/freetype
[Root] cp libttf.so  /usr/local/arm/2.95.3/arm-linux/lib

安装库完成,哈!

经过试验发现 MiniGUI 1.3.3 版本在链接 ljpeg lpng lttf 时老是要链接 /usr/lib 下的库,没办法,用老方法
[Root]# cd /usr/lib

[Root]# mv libjpeg.so   libjpeg.so_back
[Root]# ln –s /usr/local/arm/2.95.3/arm-linux/lib/libjpeg.so  ./libjpeg.so    //指向 arm 的库

[Root]# mv libpng.so   libpng.so_back
[Root]# ln –s /usr/local/arm/2.95.3/arm-linux/lib/libpng.so  ./libpng.so

[Root]# mv libttf.so   libttf.so_back
[Root]# ln –s /usr/local/arm/2.95.3/arm-linux/lib/libttf.so  ./libttf.so

完成以上工作后就可以编译 libminigui 了


[user]# cd libminigui-1.3.3
[user]#  make menuconfig                //就用图形界面来配置就好了,不要用一堆 –enable-xxx 之类的,太麻烦

如果在 make menuconfig 出错,去检查一下你的 gcc ,前面我们把它指向 arm-linux-gcc ,问一下,你改回来没有???????

下面是配置libminigui

在 System Wide Options 里如下:

  • Build MiniGUI-Lite        //用 Lite 方式编译,不是Thread 方式,这里适用于 PDA
    [ ]   Stand-Alone
    [ ] Use incore (built-in) resource        //建议不要选这个,老有问题
  • Unit of timer is 10ms
  • Cursor support
    [ ] User can move window with mouse   //建议别选这个,可以移动蛮烦人的
  • Mouse button can do double click
  • Build with debugging messages
    [ ] Trace messages of MiniGUI        //不要选这个,出来的Trace太多,看不过来
  • Include symbol name of messages

    在 GAL  engine Options 里

    (NEWGAL) GAL and its engines
  •   NEWGAL engine on Linux FrameBuffer console
    [ ]   NEWGAL engine on Qt Virtual FrameBuffer     //建议不要选这个,不然老让你用qvfb
    [ ]   NEWGAL engine on eCos LCD interface
  •   Dummy NEWGAL engine
  • Have console on Linux FrameBuffer


    在 IAL engine options 里

    [ ] EP7211-based board
    [ ] ADS Graphics Client
    [ ] iPAQ H3600 (also H3800)
    [ ] MPC823
    [ ] PX255B
    [ ] NEC VR4181
    [ ] Helio Touch Panel
    [ ] MT T800
  • SMDK2410 Touch Screen
    [ ] uClinux Touch Screen Palm/MC68EZ328
  • Dummy IAL engine
  • Native (console) input engine
    ---   Native IAL engine subdriver options
    [ ]   PS2 mouse
    [ ]   IntelligentMouse (IMPS/2) mouse
    [ ]   MS mouse
    [ ]   MS3 mouse
  •   GPM daemon


    在 Font Option 里

  • Raw bitmap font
    [ ] Var bitmap font  //千万不要选这个,不然会出现 unreferenced vfb_Courier8x8() 之类的错误
  • Incore font sansserif
  • Incore font courier
  • Incore font symbol
  • Incore font vgas
  • Qt Prerendered Font
  • TrueType font
    [ ] Adobe Type1 font


    在 Image Options 里

  • Includes SaveBitmap-related functions
    [ ] PCX file support
    [ ] LBM/PBM file support
    [ ] TGA file support
  • GIF file support
  • JPG file support
  • PNG file support

    在 Input Medthold Option 里

  • IME (GB2312) support
    [ ] IME (GB2312) Intelligent Pinyin module   //千万不要选这个,不然后面你的 mginit 程序一启动就崩溃了(Abort ,有点像 OOP 一样,显示所有的寄存器的值,然后Abort),暴不爽

    在 Development Environment Option 里

    (Linux) Platform
    (arm-linux-gcc) Compiler   //注意这里
    (glibc) Libc             //注意这里
    --- Installation options
    Path prefix: "/usr/local/arm/2.95.3/arm-linux"   //注意这里,我们把库装到交叉编译器的目录下
    --- Additonal Compiler Flags
         CFLAGS: ""
         LDFLAGS: ""

    其它的用缺省的选项就可以了,好了,现在退出,保存你的设置吧,然后它就开始检测你的系统了,注意下面的输出:

    checking for FrameBuffer console support... yes
    checking for TT_FreeType_Version in -lttf... yes      //True Type字体
    checking for jpeg_std_error in -ljpeg... yes           // jpeg 支持
    checking for png_check_sig in -lpng... yes           //png 图形支持,重要!!!
    checking for pow in -lm... yes


    这里的库应该都是显示为 yes 了,如果有 no 的话,回去检查前面你有哪步做得不对,不然的话编译后的东西可能没法正常执行,切记切记!!!

    如果这里通过了,那就OK了

    [user]#  make  //又是一个漫长的等待,呵
    [Root]#  make install

    注意:我们这里 make install 其实是给交叉编译器安装 libminigui 的库,你想,将来你需要编译为 minigui 开发的程序,这个程序总是需要链接库的吧,这些库因此也需要在交叉编译器中,不然你交叉编译的时候编译不过去 :)

    装好了,到 /usr/local/arm/2.95.3/arm-linux  的 include lib 目录下去看看,是不是多了相应的 libminigui.so  libmgext.so  libvcongui.so    在 include 目录下多了一个 minigui 目录,里面有相应的头文件


    最后,安装 popt 库,这个库在编译 mde 程序时需要使用,不然编译没法通过 :)

    http://gd.tuwien.ac.at/utils/rpm.org/dist/rpm-4.1.x/popt-1.7.tar.gz  我是从这里下载的

    [user]#  tar zxf popt-1.7.tar.gz
    [user]# cd popt-1.7
    [user]# ./configure --prefix=/usr/local/arm/2.95.3/arm-linux/ --host=arm-linux --enable-shared --enable-static
    [user]# make
    [Root]# make install

    一切很顺利,搞定了。
    交叉编译环境设置好了!

    OK ,下面是把 minigui 移植到你的板子上去了。

    我在 /opt 目录下建立了一个 rootfs 目录,即 /opt/rootfs  ,用来建立我的嵌入式系统的根目录,现在我需要把 minigui 的库文件放到里面去,

    建立目录
    [Root]# mkdir –p /opt/rootfs/usr/local/[lib,etc]

    把 /usr/local/arm/2.95.3/arm-linux/lib 中相应的库拷到 /opt/rootfs/usr/local/lib 目录下去
    下面是我拷的库文件:

    libjpeg.a          libmgext-1.3.so.3        libminigui.a   libpng.so.2            libttf.a                 libz.so
    libjpeg.la         libmgext-1.3.so.3.0.0    libminigui.la  libpng.so.2.1.0.10rc1  libttf.so              libz.so.1
    libjpeg.so        libmgext.a               libminigui.so  libpopt.a              libvcongui-1.3.so.3      libz.so.1.2.3
    libjpeg.so.62      libmgext.la              libm.so        libpopt.la             libvcongui-1.3.so.3.0.0  minigui
    libjpeg.so.62.0.0  libmgext.so              libm.so.6      libpopt.so             libvcongui.a             shared
    libm-2.2.3.so      libminigui-1.3.so.3      libpng.a       libpopt.so.0           libvcongui.la
    libm.a             libminigui-1.3.so.3.0.0  libpng.so      libpopt.so.0.0.0       libvcongui.so

    其中一些 .a 的静态库是不需要拷过去的,我图方便,一起拷了,呵,懒人的做法

    同时修改 /opt/rootfs/etc/ld.so.conf ,在里面最后新加入一行  /usr/local/lib

    然后执行 [Root] ldconfig –r /opt/rootfs     //把 rootfs 当成根目录,执行

    OK,库文件准备完毕

    下面把资源文件也拷过来,还记得吗,在前面 搭建 PC 环境中讲过安装资源文件,它被装在了 /usr/local/lib 目录下,一个叫 minigui 的目录,我们要做的就是把它拷过来

    [Root]# cp –r –a /usr/local/lib/minigui  /opt/rootfs/usr/local/    连目录一起拷过来,目录结构和主机一样

    把配置文件也拷过来

    [Root]# cp /usr/local/etc/MiniGUI.cfg   /opt/rootfs/usr/local/etc/   记住,保持目录结构的一致

    修改 MiniGUI.cfg ,如下

    [system]
    # GAL engine
    gal_engine=fbcon     //这里修改

    # IAL engine
    ial_engine=dummy      // 这里修改,我不知道你会用什么触摸屏,所以就用dummy肯定不会错

    mdev=/dev/touchscreen/0raw  //解摸屏,如果前面是 dummy ,则这里改不改无所谓
    mtype=none

    [fbcon]
    defaultmode=240x320-16bpp  // 根据你的LCD大小自己设置,设置错误minigui 就启动不了


    ial_engine 一开始建议用 dummy ,先让 minigui 跑起来,以后再把 触摸屏 加进去,保证尽可能减少错误的发生

    保存,退出。 OK ,你的板子上的系统也搭建完毕了,现在来让真正的图形界面跑起来!:)

    注意:你Build 你的 嵌入式 Linux 内核时,在 Console 中一定要先上 FrameBuffer ,从4位色一直到 16 位色的支持,全选上吧,同时把 VGA TextOut 选项勾掉,不要选它!!!!!!!!!!

    内核启动时就要激活 FrameBuffer ,不然 minigui 没法启动起来,激活的方法就是给它传内核参数 vga=xxx 之类的。


    3.启动你的 MiniGUI 的图形界面

    看看你的 Windows 操作系统,左下方是一个 [开始] 按钮,然后是 任务条 ,MiniGUI 也提供了类似的界面,这就是一个叫 mginit 的程序,它启动后就跟widnows的界面很像了,它就在 mde 包里面,还记得最初让你下载的那个程序包吗??  现在我们就来安装它!!:)

    [user]# tar zxf mde-1.3.0.tar.gz
    [user]# cd mde-1.3.0

    //我们先对 mginit 程序做一点小修改,呵

    [user]#  cd mginit ; vi mginit.c


    在 297 行处,把下面代码注释掉

    /***************
       AboutMiniGUI ();
    AboutMDE ();
    **************/
    保存,退出即可。

    因为我们没有 触摸屏 现在,没法点它的 确认 按钮,所以把这些 About 信息去掉:)

    好了,现在来编译吧,在mde-1.3.0 目录里
    [user]# ./configure --prefix=/opt/rootfs/usr/local --host=arm-linux
    [user]# make

    如果你发现 mginit 目录下的程序没有被编译,那就说明你的 libminigui 配置不正确,记住,你必须是配置为 Lite 模式,这个程序才会被编译


    [user]# make install

    事实上证明,make install,根本没用,它什么都没做,do nothing
    所以还是我们自己动手来做吧,呵

    [Root]# mkdir –p /opt/rootfs/usr/local/lib/shared/miniguiapps    //建立了一个我们自己的目录,好长,呵

    [Root]# cp –r –a  mde-1.3.0/*   /opt/rootfs/usr/local/lib/shared/miniguiapps

    直接全部拷过去,然后到 /opt/rootfs/usr/local/lib/shared/miniguiapps 的各个程序目录下去,比如 mginit , bomb , painter 之类的,把不用的 .c .h .o Makefile 之类的全删除掉,保留 可执行文件和相应的 res 目录下的资源

    注意,保持目录的结构,mginit.rc 文件不要删了,这个对mginit 程序很重要


    OK,最后一步了,修改配置文件

    [Root]#  vi  /opt/rootfs/linuxrc 文件

    一般你配置嵌入式系统的时候都会有这个文件,用来执行一些系统的初始化工作,如果没有,就在你相应的初始化脚本(例如 etc/inittab)中加入下面的语句

    mknod /dev/ttyp5 c 3 5
    mknod /dev/ptyp5 c 2 5

    cd /usr/local/lib/shared/miniguiapps/mginit
    ./mginit

    注意:最后执行 mginit 命令的方式,先进入到它所在的目录,然后再执行,千万不要只写成

    /usr/local/lib/shared/miniguiapps/mginit/mginit

    因为 mginit 执行时在“当前目录”的res文件夹下搜索显示的资源,这种写法则“当前目录”为 / 根目录,所以会找不到 res 文件夹,于是显示错误
    “ Can not create taskbar! ” 就退出了!

    如果运行时显示没有 mknod 命令,请检查一下你的 busybox 的配置 :)

    切记切记!


    好了,一切成功了,现在放到你的板子上去试试吧:)

    [Root]# cd /opt
    [Root]# mkcramfs  rootfs  root.cramfs  制作根文件系统镜像,把 root.cramfs 烧到你的板子里面就OK了,启动,就可以看到 minigui 的图形界面启动了 :)


    注意: 因为你的 minigui 是按 Lite 模式编译的,如果必须 mginit 首先运行起来,你其它的程序(比如 bomb ,或是 helloword)才能执行,如果 mginit 没有运行起来你就执行 helloword 的话,就会显示错误

    “ Can not attach shared resource ! ”



    4.为  minigui 开发程序


    环境配好了,现在是开发自己的程序了,呵呵,写个简单的 Helloword 程序


    /*
    ** $Id: helloworld.c,v 1.7 2003/06/13 07:15:49 weiym Exp $
    **
    ** Listing 2.1
    **
    ** helloworld.c: Sample program for MiniGUI Programming Guide
    **      The first MiniGUI application.
    **
    ** Copyright (C) 2003 Feynman Software.
    **
    ** License: GPL
    */

    #include <stdio.h>

    #include <minigui/common.h>
    #include <minigui/minigui.h>
    #include <minigui/gdi.h>
    #include <minigui/window.h>

    static int HelloWinProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam)
    {
       HDC hdc;
       switch (message) {
           case MSG_PAINT:
               hdc = BeginPaint (hWnd);
               TextOut (hdc, 100, 100, "Hello, world!");
               EndPaint (hWnd, hdc);
               return 0;

           case MSG_CLOSE:
               DestroyMainWindow (hWnd);
               PostQuitMessage (hWnd);
               return 0;
       }

       return DefaultMainWinProc(hWnd, message, wParam, lParam);
    }

    int MiniGUIMain (int argc, const char* argv[])
    {
       MSG Msg;
       HWND hMainWnd;
       MAINWINCREATE CreateInfo;

    #ifdef _LITE_VERSION
       SetDesktopRect(0, 0, 1024, 768);
    #endif

       CreateInfo.dwstyle = WS_VISIBLE | WS_BORDER | WS_CAPTION;
       CreateInfo.dwExstyle = WS_EX_NONE;
       CreateInfo.spCaption = "Hello, world";
       CreateInfo.hMenu = 0;
       CreateInfo.hCursor = GetSystemCursor(0);
       CreateInfo.hIcon = 0;
       CreateInfo.MainWindowProc = HelloWinProc;
       CreateInfo.lx = 0;
       CreateInfo.ty = 0;
       CreateInfo.rx = 320;
       CreateInfo.by = 240;
       CreateInfo.iBkColor = COLOR_lightwhite;
       CreateInfo.dwAddData = 0;
       CreateInfo.hHosting = HWND_DESKTOP;
       
       hMainWnd = CreateMainWindow (&CreateInfo);
       
       if (hMainWnd == HWND_INVALID)
           return -1;

       ShowWindow(hMainWnd, SW_SHOWNORMAL);

       while (GetMessage(&Msg, hMainWnd)) {
           TranslateMessage(&Msg);
           DispatchMessage(&Msg);
       }

       MainWindowThreadCleanup (hMainWnd);

       return 0;
    }

    #ifndef _LITE_VERSION
    #include <minigui/dti.c>
    #endif



    首先在 PC 上编译,验证通过!

    [user]# gcc  -o helloword  helloword.c  -lminigui –lmgext

    如果没有错误,运行 qvfb ,按前面说的设置好,然后执行 [user]# ./helloword

    一切正常,没有错误,现在就要把它放到我们的 板子上去跑了

    [user]# arm-linux-gcc –O2 –o helloword helloword.c –lminigui –lmgext

    编译完后,把它烧到板子的某个目录下,就可以在 板子上跑了!



    所以这里就是说,minigui 提供了让你在 PC 上就可以调试和运行程序的方法(使用qvfb ),等你保证程序正确了以后,只需要把它重新编译一下,放到板子上去就行了!


    5.一些常见的问题

    这几天遇到不一些问题,发现论坛上也基本上没人回答我,所以只好自己解决了,这里把一些问题写出来,方便有需要的人:

    问题1:在板子上跑的程序都显示 can not find qvfb …  之类,可是我只是想让它在板子上跑在 FrameBuffer 之上啊?

    解决:在编译 libminigui 的时候,把
    [ ] Use incore (built-in) resource        //建议不要选这个,老有问题
    [ ]   NEWGAL engine on Qt Virtual FrameBuffer     //建议不要选这个,不然老让你用qvfb


    问题2:编译的时候老出现  unreferenced to vbf_Courier8x8()  之类的问题

    解决:
    [ ] Var bitmap font  //千万不要选这个,不然会出现 unreferenced vfb_Courier8x8() 之类的错误


    问题3:一切都搞定了,可是执行 mginit() 的时候就崩溃了,把所有的寄存器值打印了出来,然后显示了个 Abort() 就退出了!

    解决:
    [ ] IME (GB2312) Intelligent Pinyin module   //千万不要选这个,不然后面你的 mginit 程序一启动就崩溃了


    问题4: 为什么我执行 helloword 就显示 “Can not attach shared resource!”

    解决:
    注意: 因为你的 minigui 是按 Lite 模式编译的,如果必须 mginit 首先运行起来,你其它的程序(比如 bomb ,或是 helloword)才能执行,如果 mginit 没有运行起来你就执行 helloword 的话,就会显示错误

    “ Can not attach shared resource ! ”

    问题5:怎么把自己的程序加到 minigui 的 taskbar 上去,并且排在前面??

    解决:
    查看 mginit 目录下的 mginit.rc 文件,里面就是配置,我想你能看明白的 :)


    问题6:为什么我的程序显示 can not find libminigui.so ??

    解决:你是否忘了在 etc/ld.so.conf 中加入 /usr/local/lib ,并且执行 ldconfig 程序? 看前面说的方法

    好了,就写这么多吧,希望对新手有所帮助!


    Singlewolfyu (大漠孤狼) 写于 清华 FIT 4-305
    2006-11-7
    yuqiang0107@126.com


    把我写的另一篇关于 IAL 校正的文章也归并到这个贴子里来,算是做个汇总吧,原贴可以在论坛中搜 singlewolfyu 的文章就可以找到,原贴里有一些我上传的附件,有兴趣可以去下载,这里就不上传了! 希望这篇文章能对大家有用!

    带屏幕校正功能的 2410 的 IAL
    作者:大漠孤狼                E-MAIL:yuqiang0107@126.com

    前几天成功的把 MiniGUI 移植到板子上了,顺利的跑起来了。我用的是 SMDK2410 的 IAL 程序,可是还有一些问题,如下:

    1:点在触摸屏上不动,可以见到 Cusor 在点的位置附近老是跳动,而且点的位置不准,
    2:经常点 MiniGUI 的菜单或是按钮的时候,MiniGUI 没有反应,经printf 出来,发现菜单有时候收不到 MSG_COMMAND 消息,有时候能收到,就是说很不稳定
    3:经常点击触摸屏的手离开后,Cursor 就消失了

    经过调试后发现了原因,如下:

    1:由于用的触摸屏是比较便宜的那种,所谓便宜没好货,触摸屏的采样很不稳定,我的屏是 3 寸屏,分辨率是 240x320 16-pp 的那种,可是我点击触摸屏从驱动读出来的值却是 900 多,800 多,而且还不是简单的线性关系,比如我点 X 轴 120 处,值为 400 ,我点X轴 239 处值为 900 ,晕死,如果用原来的 SMDK 2410 IAL 程序,根本无法正常工作

    2:便宜屏还有个问题,就是在刚开始按触摸屏和快要放手时,这一头一尾两种情况下,采样值根本就是错误的,比如我按在 X 轴 120  处,刚开始得到的值是 230 ,然后是 250,400 ,401,398,403 ……402,100,101 ,这样的序号,可以看到,在刚开始和快结束时采到的值根本是错误的,这就是为什么我说“手一离开触摸屏,Cusor就消失”的原因为了,因为这时候 Cusor 跑到错误的坐标值上去了,当然就消失了

    3:经常点 MiniGUI 的菜单却没有响应,其实还是上面 2 的原因,菜单的响应是当你的手离开触摸屏后,会产生一个 MSG_LBUTTONUP 消息,在这个消息中会调用 PtInRect()检查这时候的点击位置是否在菜单上,如果在的话,菜单就会触发一个 MSG_COMMAND 消息,于时菜单就会显示出来,其实 MiniGUI 中对所有的点击都是这样处理的。(自己看看 MiniGUI 的源代码就会明白了)。因为我的便宜屏在手快要离开触摸屏时得到的坐标是错误的,所以这时候 PtInRect() 就会返回错误的值,就好像我点在屏的别的地方了一样,所以这时候菜单根本得不到消息。


    根据以上原因,我对 MiniGUI  1.3.3 版本中的 2410 的 IAL 程序进行了修改,使得它在我的 便宜屏 上一样可以正常工作。它提供了去抖动功能,就是点击时一头一尾那两下的不准确的值不能要,同时提供了一个方便的屏幕校准程序,你只需要做小小的修改就可以校准让它在你的 便宜屏 上很好的正常工作了。

    新程序的使用方法:

    在 2410.c 中定义了两个数组,如下


    typedef struct mPoint {      int      x,
                                   y ;
                       } mPOINT ;

    static mPOINT ts_position[4]={ {940,926},{940,102},{96,104},{120,940} };
    static mPOINT display_position[4]={ {0,0},{0,319},{239,319},{239,0} };

    ts_position 意思为 TouchScreen 的 位置
    display_position 意思为屏幕上显示的 位置

    比如我前面说的,我的屏幕是 240x320 的,我点四个角 {0,0},{0,319},{239,319},{239,0} ,从触屏上读出来的数据分别为 {940,926},{940,102},{96,104},{120,940} ,填入这两个数就行

    所以使用方法就是,你自己取四个点(其实只要3个点就够了,呵),点这四个点,得到相应的触摸屏读出来的值,把这些数据填到这两个数组中,OK,你的 触摸屏 就可以正常工作了 :)

    后面附一个 readpos.c  的程序,你可以执行它,然后点击触摸屏,它会显示出触摸屏读出来的值。

    程序: 2410_带触摸屏校正功能.c

    /*
    ** $Id: 2410.c,v 1.4 2003/11/21 12:15:37 weiym Exp $
    **
    ** 2410.c: Low Level Input Engine for SMDK2410 Dev Board.
    **
    ** Copyright (C) 2003 Feynman Software.
    */

    /*
    ** This program is free software; you can redistribute it and/or modify
    ** it under the terms of the GNU General Public License as published by
    ** the Free Software Foundation; either version 2 of the License, or
    ** (at your option) any later version.
    **
    ** This program is distributed in the hope that it will be useful,
    ** but WITHOUT ANY WARRANTY; without even the implied warranty of
    ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    ** GNU General Public License for more details.
    **
    ** You should have received a copy of the GNU General Public License
    ** along with this program; if not, write to the Free Software
    ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
    */

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <unistd.h>
    #include <fcntl.h>

    #include "common.h"

    #ifdef _SMDK2410_IAL

    #include <sys/ioctl.h>
    #include <sys/poll.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <linux/kd.h>

    #include <sys/time.h>  /* i add it here */
    #include <math.h>
    #include <sys/poll.h>
    #include <sys/types.h>

    #include "ial.h"
    #include "2410.h"

    typedef struct mPoint {
                          int      x,
                                   y ;
                       } mPOINT ;

    static mPOINT ts_position[4]={ {940,926},{940,102},{96,104},{120,940}

                                 };
    static mPOINT display_position[4]={ {0,0},{0,319},{239,319},{239,0}
                                    };

    typedef struct Matrix {
    /* This arrangement of values facilitates
    *  calculations within getDisplayPoint()
    */
                          int      An,     /* A = An/Divider */
                                   Bn,     /* B = Bn/Divider */
                                   Cn,     /* C = Cn/Divider */
                                   Dn,     /* D = Dn/Divider */
                                   En,     /* E = En/Divider */
                                   Fn,     /* F = Fn/Divider */
                                   Divider ;
                       } mMATRIX ;

    static mMATRIX m_matrix;

    int setCalibrationMatrix( mPOINT * display,
                                   mPOINT * screen,
                                   mMATRIX * matrix) ;


    int getDisplayPoint( mPOINT * display,
                              mPOINT * screen,
                              mMATRIX * matrix ) ;



    /* for data reading from /dev/ts */
    typedef struct {
      unsigned short pressure;
      unsigned short x;
      unsigned short y;
      unsigned short pad;
    } TS_EVENT;

    static unsigned char state [NR_KEYS];
    static int ts = -1;
    static int mousex = 0;
    static int mousey = 0;
    static TS_EVENT ts_event;


    #undef _DEBUG

    /************************  Low Level Input Operations **********************/
    /*
    * Mouse operations -- Event
    */
    static int mouse_update(void)
    {
      return 1;
    }

    static void mouse_getxy(int *x, int* y)
    {
    #ifdef _DEBUG
      printf ("mousex = %d, mousey = %d\n", mousex, mousey);
    #endif

      if (mousex < 0) mousex = 0;
      if (mousey < 0) mousey = 0;
      if (mousex > 239) mousex = 239;
      if (mousey > 319) mousey = 319;

      *x = mousex;
      *y = mousey;
    }

    static int mouse_getbutton(void)
    {
     return ts_event.pressure;
    }

    #ifdef _LITE_VERSION
    static int wait_event (int which, int maxfd, fd_set *in, fd_set *out, fd_set *except,
                  struct timeval *timeout)
    #else
    static int wait_event (int which, fd_set *in, fd_set *out, fd_set *except,
                  struct timeval *timeout)
    #endif
    {
      fd_set rfds;
      int    retvalue = 0;

      int    e;

    static int last_pressure=0;

      if (!in) {
          in = &rfds;
          FD_ZERO (in);
      }

      if ((which & IAL_MOUSEEVENT) && ts >= 0) {
          FD_SET (ts, in);
    #ifdef _LITE_VERSION
          if (ts > maxfd) maxfd = ts;
    #endif
      }


    #ifdef _LITE_VERSION
      e = select (maxfd + 1, in, out, except, timeout) ;
    #else
      e = select (FD_SETSIZE, in, out, except, timeout) ;
    #endif


      if (e > 0) {
          if (ts >= 0  && FD_ISSET (ts, in) ) {
              FD_CLR (ts, in);
              ts_event.x=0;
              ts_event.y=0;

              read (ts, &ts_event, sizeof (TS_EVENT));  

             if(last_pressure==0)
             {
                read(ts,&ts_event,sizeof(TS_EVENT));
                read(ts,&ts_event,sizeof(TS_EVENT));
     }
             
              if (ts_event.pressure > 0 ) {
           
                  int new_x;
                  int new_y;

    mPOINT ts_point,display_point;
                 
                  ts_point.x=ts_event.x;
                  ts_point.y=ts_event.y;
                   
                  getDisplayPoint(&display_point,&ts_point,&m_matrix);
                   

                  new_x = display_point.x;
                  new_y = display_point.y;
                 
    if(last_pressure==0 || (last_pressure>0 && abs(new_x-mousex)<7))
                          mousex=new_x;
                  if(last_pressure==0 || (last_pressure>0 && abs(new_y-mousey)<7))
                          mousey=new_y;
    /*
    printf("ts_x=%d,ts_y=%d\n",ts_event.x,ts_event.y);              
    printf("mounsex=%dmousey=%d\n",mousex,mousey);
    */
              }

    #ifdef _DEBUG
              if (ts_event.pressure > 0) {
                  printf ("mouse down: ts_event.x = %d, ts_event.y = %d\n", ts_event.x, ts_event.y);
              }
    #endif
             
              ts_event.pressure = ( ts_event.pressure > 0 ? IAL_MOUSE_LEFTBUTTON : 0);
                 
      last_pressure=ts_event.pressure;
    /*    
    printf("pressure=%d\n",ts_event.pressure);
    */
              retvalue |= IAL_MOUSEEVENT;
          }

      }
      else if (e < 0) {
          return -1;
      }

      return retvalue;
    }

    BOOL Init2410Input (INPUT* input, const char* mdev, const char* mtype)
    {
      ts = open ("/dev/ts", O_RDONLY);
      if (ts < 0) {
          fprintf (stderr, "2410: Can not open touch screen!\n");
          return FALSE;
      }



      input->update_mouse = mouse_update;
      input->get_mouse_xy = mouse_getxy;
      input->set_mouse_xy = NULL;
      input->get_mouse_button = mouse_getbutton;
      input->set_mouse_range = NULL;

      input->wait_event = wait_event;
      mousex = 0;
      mousey = 0;
      ts_event.x = ts_event.y = ts_event.pressure = 0;

    setCalibrationMatrix(&display_position,&ts_position,&m_matrix);    
      return TRUE;
    }

    void Term2410Input(void)
    {
      if (ts >= 0)
          close(ts);    
    }

    #endif /* _SMDK2410_IAL */

    int setCalibrationMatrix( mPOINT * displayPtr,
                            mPOINT * screenPtr,
                            mMATRIX * matrixPtr)
    {

      int  retvalue = 0 ;


     
      matrixPtr->Divider = ((screenPtr[0].x - screenPtr[2].x) * (screenPtr[1].y - screenPtr[2].y)) -
                           ((screenPtr[1].x - screenPtr[2].x) * (screenPtr[0].y - screenPtr[2].y)) ;

      if( matrixPtr->Divider == 0 )
      {
          retvalue = -1 ;
      }
      else
      {
          matrixPtr->An = ((displayPtr[0].x - displayPtr[2].x) * (screenPtr[1].y - screenPtr[2].y)) -
                          ((displayPtr[1].x - displayPtr[2].x) * (screenPtr[0].y - screenPtr[2].y)) ;

          matrixPtr->Bn = ((screenPtr[0].x - screenPtr[2].x) * (displayPtr[1].x - displayPtr[2].x)) -
                          ((displayPtr[0].x - displayPtr[2].x) * (screenPtr[1].x - screenPtr[2].x)) ;

          matrixPtr->Cn = (screenPtr[2].x * displayPtr[1].x - screenPtr[1].x * displayPtr[2].x) * screenPtr[0].y +
                          (screenPtr[0].x * displayPtr[2].x - screenPtr[2].x * displayPtr[0].x) * screenPtr[1].y +
                          (screenPtr[1].x * displayPtr[0].x - screenPtr[0].x * displayPtr[1].x) * screenPtr[2].y ;

          matrixPtr->Dn = ((displayPtr[0].y - displayPtr[2].y) * (screenPtr[1].y - screenPtr[2].y)) -
                          ((displayPtr[1].y - displayPtr[2].y) * (screenPtr[0].y - screenPtr[2].y)) ;
     
          matrixPtr->En = ((screenPtr[0].x - screenPtr[2].x) * (displayPtr[1].y - displayPtr[2].y)) -
                          ((displayPtr[0].y - displayPtr[2].y) * (screenPtr[1].x - screenPtr[2].x)) ;

          matrixPtr->Fn = (screenPtr[2].x * displayPtr[1].y - screenPtr[1].x * displayPtr[2].y) * screenPtr[0].y +
                          (screenPtr[0].x * displayPtr[2].y - screenPtr[2].x * displayPtr[0].y) * screenPtr[1].y +
                          (screenPtr[1].x * displayPtr[0].y - screenPtr[0].x * displayPtr[1].y) * screenPtr[2].y ;
      }

      return( retvalue ) ;

    } /* end of setCalibrationMatrix() */

    int getDisplayPoint( mPOINT * displayPtr,
                       mPOINT * screenPtr,
                       mMATRIX * matrixPtr )
    {
      int  retvalue = 0 ;


      if( matrixPtr->Divider != 0 )
      {

              /* Operation order is important since we are doing integer */
              /*  math. Make sure you add all terms together before      */
              /*  dividing, so that the remainder is not rounded off     */
              /*  prematurely.                                           */

          displayPtr->x = ( (matrixPtr->An * screenPtr->x) +
                            (matrixPtr->Bn * screenPtr->y) +
                             matrixPtr->Cn
                          ) / matrixPtr->Divider ;

          displayPtr->y = ( (matrixPtr->Dn * screenPtr->x) +
                            (matrixPtr->En * screenPtr->y) +
                             matrixPtr->Fn
                          ) / matrixPtr->Divider ;
      }
      else
      {
          retvalue = -1 ;
      }

      return( retvalue ) ;

    } /* end of getDisplayPoint() */



    Readpos.c 程序,帮助你读取触摸屏的值


    #include <stdio.h>

    typedef struct {
      unsigned short pressure;
      unsigned short x;
      unsigned short y;
      unsigned short pad;
    } TS_EVENT;

    static TS_EVENT ts_event;
    static int ts;

    int main()
    {
      ts = open ("/dev/ts", 0);
      if (ts < 0) {
          fprintf (stderr, "2410: Can not open touch screen!\n");
          return 0;
      }

    while(1)  
    {
          if(       read (ts, &ts_event, sizeof (TS_EVENT)))
         {
             printf("X=%d,Y=%d,Pressure=%d \n",ts_event.x,ts_event.y,ts_event.pressure);
          }      

    }

    }


    大漠孤狼   yuqiang0107@126.com
    2006-11-11  写于 清华 FIT 4-305


    打包下载]   [引用该文]   [发表评论]   [转寄该文]   [关闭窗口
    此文章相关评论:
    该文章有225个相关评论如下:(点这儿论坛方式查看)

    vertial 发表于: 2006/11/08 02:03pm
    我现在头疼死了,dummyial很正常,但挂上我自己的ial就提示abort,能向你请教吗?
    我的邮箱:vertialtulip@163.com
    我的QQ:565631071
    请大虾帮帮我吧
     顶部
    yangyi 发表于: 2006/11/10 08:44am
    我想请教搂主一件事:我在交叉编译jpeg库时,提示信息说找不到./libtool,于是我下载了一个libtool安装包,然后交叉编译libtool,改变configure文件里的CC为交叉编译器,配制可通过,然后make的时候就死活过不去了
    楼主有没有遇到这种情况?
    非常感谢!
     顶部
    yeshi 发表于: 2006/11/10 07:20pm

    一般情况下用 [cdp@cdpserver jpeg-6b]$ ./configure --prefix=/usr/local/arm/2.95.3/arm-linux/ --host=arm-linux --enable-shared --enable-static

    --host=arm-linux  来指定交叉编译选项,可是这里死活它不认,所以改用别的方法,如下

    [user]# ./configure --prefix=/usr/local/arm/2.95.3/arm-linux/ CC=arm-linux-gcc --enable-shared --enable-static

    [user]# make





    我就用./configure --prefix=/usr/local/arm/2.95.3/arm-linux/ --host=arm-linux --enable-shared --enable-static
    是可以的

    但是编译libminigui库的时候不支持jpeg

    也试了./configure --prefix=/usr/local/arm/2.95.3/arm-linux/ CC=arm-linux-gcc --enable-shared --enable-static

    可是和楼上的说的一样
    可以configure
    但是一make
    就出错

    请问楼主是怎么回事!
     顶部
    singlewolfyu 发表于: 2006/11/11 10:26am
    相关附件该主题有一个“unknow”类型附件,点击下载 (共 9896 字节)


    ./libtool  不用去下载的,是你的编译器路径配置不对

    比如我把 arm-linux-gcc 装在 /usr/local/arm/2.95.3/bin 下,就把这个路径加到你的 PATH 环境变量中去

    这样就行了

    照着我写的做,我是一步一步试过的,没问题

     顶部
    singlewolfyu 发表于: 2006/11/11 10:33am
    按我说的方法先把 jpeg 库编译通过,然后安装到 /usr/local/arm/2.95.3/arm-linux/ [include,lib]  这两个目录下去,不要装在了 /usr/local/arm/2.95.3/ [include,lib] 目录下,不然就找不到这个库

    同时在编译 libminigui 时记着把 /usr/lib 目录下的 libjpeg.so 先保存一下
    mv libjpeg.so libjpeg.so_back
    然后把你编译好的 arm 的 libjpeg.so 链接到这里
    ln -s //usr/local/arm/2.95.3/arm-linux/lib/libjpeg.so  ./libjpeg.so

    因为MiniGUI 死活就只检查/usr/lib 目录下,当它发现你的 /usr/lib/libjpeg.so 是为 i386 编译的,而不是 arm 时,它就不把 jpeg 库编译进去

    做完以上两步后,然后在 libminigui 目录下 make menuconfig
    选上 jpeg 库支持,然后它会检查你的系统,这时候就能找到为 arm 编译的 libjpeg.so 库了

     顶部
    yangyi 发表于: 2006/11/11 04:24pm
    不是啊,我察看环境变量:$PATH,显示有/opt/host/armv4l/bin(交叉编译器装在这里),而且之前CC=armv4l-unknown-linux-gcc ./configure ...是可以通过的,要是因为环境配置的话configure应该过不去
     顶部
    starss 发表于: 2006/11/11 04:40pm
    楼主辛苦了
    写这么详细,真不容易啊
    应该给精了

    我也遇到了jpeg库的老去/usr/lib下找的问题了
    我直接拷了一份arm的然后把系统的给覆盖了
    不多那么一来好多东西不能用,所以用完还得换回去,挺郁闷的

     顶部
    至爱森林 发表于: 2006/11/15 05:18pm
    楼主,我按您所写的网址,下载不到png库,网上也没有搜到同名的!没法继续进行,还有那里可以下载亚?
     顶部
    lqgcd 发表于: 2006/11/15 10:57pm

    下面引用由yangyi2006/11/10 08:44am 发表的内容:
    我想请教搂主一件事:我在交叉编译jpeg库时,提示信息说找不到./libtool,于是我下载了一个libtool安装包,然后交叉编译libtool,改变configure文件里的CC为交叉编译器,配制可通过,然后make的时候就死活过不去 ...



    是你的libtool路径不对,用ln把你的交叉编译器下的libtool链接到当前目录就可以了;
     顶部
    wayner1 发表于: 2006/11/16 12:20pm
    不知道楼主有没有移植到开发板上尝试过没有?
    我在移植到240*320,16bit的开发板时,发现颜色显示不对,修改了newgal目录下的Pixels.c文件中的

    Uint32 GAL_MapRGB(GAL_Pixelformat *format, Uint8 r, Uint8 g, Uint8 b)
    {
    if ( format->palette == NULL ) {
    return (r >> 3) << 11
         | (g >> 2) << 5
         | (b >> 3) << 0;
         
    //return (r >> format->Rloss) << format->Rshift
    //       | (g >> format->Gloss) << format->Gshift
    //       | (b >> format->Bloss) << format->Bshift
    //       | format->Amask;
    } else {
          if (format->DitheredPalette)
             return GAL_FindDitheredColor (format->BitsPerPixel, r, g, b);
          else
             return GAL_FindColor(format->palette, r, g, b);
    }
    }
    能正常显示颜色了,但是在装载带有alpha通道的png图片时,图片颜色又不对了,可能需要修改Uint32 GAL_MapRGBA(GAL_Pixelformat *format, Uint8 r, Uint8 g, Uint8 b, Uint8 a)函数,但不知道怎么弄,不知道楼主有没有遇到过?

     顶部
    至爱森林 发表于: 2006/11/16 03:21pm
    楼主我在进行到make menuconfig的


    checking for FrameBuffer console support... yes
    checking for TT_FreeType_Version in -lttf... yes      //True Type字体
    checking for jpeg_std_error in -ljpeg... yes           // jpeg 支持
    checking for png_check_sig in -lpng... yes           //png 图形支持,重要!!!
    checking for pow in -lm... yes


    的时候,别的都显示yes只有
    checking for png_check_sig in -lpng... no
    可是我去 /usr/local/arm/2.95.3/arm-linux/lib中查看已经存在libpng.a libpng.so    libpng.so.2 libpng.so.2.1.0.10rc1  而且/usr/local/arm/2.95.3/arm-linux/include中也已经存在相对应的.h文件

    为什么还显示no呢?
    请楼主和各位高人帮忙!

     顶部
    singlewolfyu 发表于: 2006/11/16 05:15pm

    在 /usr/lib  下建立一个 libpng.so 指向 你编译好的适用 arm 的 png 库

    仔细看我写的,里面有写要建立 link

     顶部
    singlewolfyu 发表于: 2006/11/16 05:17pm
    To wayner1  :

    我觉得不会是 MiniGUI 的问题,会不会是你的 LCD 的驱动程序有问题,
    检查一下驱动程序吧,或是你的 LCD 硬件有问题

     顶部
    sunkepie 发表于: 2006/11/17 10:27am
    jia jing
     顶部
    至爱森林 发表于: 2006/11/17 03:54pm
    移植成功
    感谢楼主
     顶部
    wayner1 发表于: 2006/11/17 04:09pm
    不是LCD的问题,我的驱动和硬件在1.6版本上运行一切正常,只在1.3版本上有问题。
    因为1.6的开源版本没有使用newgal,不支持png图片的透明通道。但1.3版本却可以支持,但显示有问题。






    下面引用由singlewolfyu2006/11/16 05:17pm 发表的内容:
    To wayner1  :
    我觉得不会是 MiniGUI 的问题,会不会是你的 LCD 的驱动程序有问题,
    检查一下驱动程序吧,或是你的 LCD 硬件有问题


     顶部
    wayner1 发表于: 2006/11/17 04:24pm
    似乎有人碰到过同样的问题,查看下面链接:
    http://www.minigui.org/cgi-bin/lb5000/printpage.cgi?forum=6&topic=1562

    和我的问题相同

     顶部
    yeshi 发表于: 2006/11/18 08:16pm
    我是严格按照楼主的方式来的
    可是出现如下信息
    在安装完所有的库之后
    make menuconfig
    make

    /usr/local/arm/2.95.3/arm-linux/bin/ld: template.lo: Relocations in generic ELF (EM: 3)
    template.lo: could not read symbols: File in wrong format
    collect2: ld returned 1 exit status
    make[3]: *** [libminigui.la] Error 1
    make[2]: *** [all-recursive] Error 1
    make[1]: *** [all-recursive] Error 1
    make: *** [all] Error 2

    这是怎么回事
    请楼主和其他高手指教!

     顶部
    singlewolfyu 发表于: 2006/11/19 02:40pm
    template.lo

    用 file 命令查看一下这个文件,肯定不是 ARM 指令集的,所以 ld 不认它的格式,
    把这个重新用 arm-linux-gcc 编译一下

     顶部
    seusendy 发表于: 2006/11/19 05:03pm
    赞一下楼主,确实是相当有帮助
     顶部
    jiandan 发表于: 2006/11/24 10:05am
    楼主,我按您所写方法移植,库文件太大,我的ramdisk只有8M,这么办

     顶部
    liubiwen 发表于: 2006/11/25 04:26pm
    我在装zlib库./ configure 时出现错误
    hecking for vsnprintf() in stdio.h... No.
     WARNING: vsnprintf() not found, falling back to vsprintf(). zlib
     can build but will be open to possible buffer-overflow security
     vulnerabilities.
    然后make 时
    出现错误
    gcc -O3 -DNO_vsnprintf -DUSE_MMAP -o example example.o -L. libz.a
    /usr/local/lib/gcc-lib/arm-elf/2.95.3/libgcc.a(__main.o): In function `__do_global_ctors':
    __main.o(.text+0xc4): undefined reference to `__CTOR_LIST__'
    /usr/local/lib/gcc-lib/arm-elf/2.95.3/libgcc.a(__main.o)(.data+0x0): undefined reference to `__DTOR_LIST__'
    collect2: ld returned 1 exit status
     顶部
    liubiwen 发表于: 2006/11/25 04:39pm
    你 好
    按照你 说的 方法进行zlib库编译./configure
    Checking for vsnprintf() in stdio.h... No.
     WARNING: vsnprintf() not found, falling back to vsprintf(). zlib
     can build but will be open to possible buffer-overflow security
     vulnerabilities.

    make的 时候出现错误
    gcc -O3 -DNO_vsnprintf -DUSE_MMAP -o example example.o -L. libz.a
    /usr/local/lib/gcc-lib/arm-elf/2.95.3/libgcc.a(__main.o): In function `__do_global_ctors':
    __main.o(.text+0xc4): undefined reference to `__CTOR_LIST__'
    /usr/local/lib/gcc-lib/arm-elf/2.95.3/libgcc.a(__main.o)(.data+0x0): undefined reference to `__DTOR_LIST__'
    该在那里定义??

     顶部
    egxsun 发表于: 2006/11/29 10:25pm
    楼主你好,我按您所写的网址,下载不到png库,网上也没有搜到同版本的!还有那里可以下载呀?  或能不能发一个给我呢?egxsun@126.com
    谢谢!
    还有lz能提供你这个交叉编译的makefile共享吗?
     顶部
    yl01051105 发表于: 2006/11/30 00:31am
    At the first step ,when I make the minigui-1.3.3, the error is :
    /usr/include/asm/byteorder.h:6:2: warning: #warning using private kernel header; include <endian.h> instead!
    stretch.c:265:47: missing terminating " character
    stretch.c:267:25: missing terminating " character
    make[3]: *** [stretch.lo] 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


    What's wrong with it?
    I'm sorry .I can't input Chinese in the linux system.

     顶部
    superruri 发表于: 2006/11/30 11:57pm
    请问楼主:
    template.lo如何重新用 arm-linux-gcc 编译呢? 谢谢
     顶部
    simin168 发表于: 2006/12/14 02:36pm
    谢谢楼主,!!!
     顶部
    simin168 发表于: 2006/12/14 03:08pm
    [这个贴子最后由simin168在 2006/12/14 03:12pm 第 1 次编辑]

    谢谢!!!
     顶部
    simin168 发表于: 2006/12/14 04:48pm
    jpeg.c:68: jpeglib.h: No such file or directory
    jpeg.c:69: jerror.h: No such file or directory
    jpeg.c:75: field `pub' has incomplete type
    jpeg.c:78: parse error before `JOCTET'
    jpeg.c:78: warning: no semicolon at end of struct or union
    jpeg.c:79: warning: type defaults to `int' in declaration of `start_of_file'
    jpeg.c:79: warning: data definition has no type or storage class
    jpeg.c:80: warning: type defaults to `int' in declaration of `my_source_mgr'
    jpeg.c:80: warning: data definition has no type or storage class
    jpeg.c:82: parse error before `*'
    jpeg.c:82: warning: type defaults to `int' in declaration of `my_src_ptr'
    jpeg.c:82: warning: data definition has no type or storage class
    jpeg.c:91: parse error before `cinfo'
    jpeg.c:92: warning: function declaration isn't a prototype
    jpeg.c: In function `init_source':
    jpeg.c:93: `my_src_ptr' undeclared (first use in this function)
    jpeg.c:93: (Each undeclared identifier is reported only once
    jpeg.c:93: for each function it appears in.)
    jpeg.c:93: parse error before `src'
    jpeg.c:99: `src' undeclared (first use in this function)
    jpeg.c: At top level:
    jpeg.c:107: parse error before `fill_input_buffer'
    jpeg.c:107: parse error before `cinfo'
    jpeg.c:108: warning: return-type defaults to `int'
    jpeg.c:108: warning: function declaration isn't a prototype
    jpeg.c: In function `fill_input_buffer':
    jpeg.c:109: `my_src_ptr' undeclared (first use in this function)
    jpeg.c:109: parse error before `src'
    jpeg.c:112: `src' undeclared (first use in this function)
    jpeg.c:116: warning: implicit declaration of function `ERREXIT'
    jpeg.c:116: `cinfo' undeclared (first use in this function)
    jpeg.c:116: `JERR_INPUT_EMPTY' undeclared (first use in this function)
    jpeg.c:117: warning: implicit declaration of function `WARNMS'
    jpeg.c:117: `JWRN_JPEG_EOF' undeclared (first use in this function)
    jpeg.c:119: `JOCTET' undeclared (first use in this function)
    jpeg.c:119: parse error before `0xFF'
    jpeg.c:120: parse error before `JPEG_EOI'
    jpeg.c:110: warning: `nbytes' might be used uninitialized in this function
    jpeg.c: At top level:
    jpeg.c:136: parse error before `cinfo'
    jpeg.c:137: warning: function declaration isn't a prototype
    jpeg.c: In function `skip_input_data':
    jpeg.c:138: `my_src_ptr' undeclared (first use in this function)
    jpeg.c:138: parse error before `src'
    jpeg.c:144: `num_bytes' undeclared (first use in this function)
    jpeg.c:145: `src' undeclared (first use in this function)
    jpeg.c:147: `cinfo' undeclared (first use in this function)
    jpeg.c: At top level:
    jpeg.c:175: parse error before `cinfo'
    jpeg.c:176: warning: function declaration isn't a prototype
    jpeg.c:186: parse error before `cinfo'
    jpeg.c:187: warning: function declaration isn't a prototype
    jpeg.c: In function `my_jpeg_data_src':
    jpeg.c:188: `my_src_ptr' undeclared (first use in this function)
    jpeg.c:188: parse error before `src'
    jpeg.c:197: `cinfo' undeclared (first use in this function)
    jpeg.c:199: `j_common_ptr' undeclared (first use in this function)
    jpeg.c:199: parse error before `cinfo'
    jpeg.c:201: `src' undeclared (first use in this function)
    jpeg.c:201: parse error before `cinfo'
    jpeg.c:202: `JOCTET' undeclared (first use in this function)
    jpeg.c:202: parse error before `)'
    jpeg.c:203: parse error before `cinfo'
    jpeg.c:207: parse error before `cinfo'
    jpeg.c:211: `jpeg_resync_to_restart' undeclared (first use in this function)
    jpeg.c:213: `infile' undeclared (first use in this function)
    jpeg.c: In function `load_jpg':
    jpeg.c:228: storage size of `cinfo' isn't known
    jpeg.c:229: storage size of `jerr' isn't known
    jpeg.c:263: warning: implicit declaration of function `jpeg_std_error'
    jpeg.c:266: warning: implicit declaration of function `jpeg_create_decompress'
    jpeg.c:272: warning: implicit declaration of function `jpeg_read_header'
    jpeg.c:275: `JCS_GRAYSCALE' undeclared (first use in this function)
    jpeg.c:275: `JCS_RGB' undeclared (first use in this function)
    jpeg.c:287: `j_common_ptr' undeclared (first use in this function)
    jpeg.c:287: `JPOOL_IMAGE' undeclared (first use in this function)
    jpeg.c:288: `JDIMENSION' undeclared (first use in this function)
    jpeg.c:288: parse error before `cinfo'
    jpeg.c:312: warning: implicit declaration of function `jpeg_calc_output_dimensions'
    jpeg.c:341: warning: implicit declaration of function `jpeg_start_decompress'
    jpeg.c:345: `JSAMPROW' undeclared (first use in this function)
    jpeg.c:345: parse error before `rowptr'
    jpeg.c:348: `rowptr' undeclared (first use in this function)
    jpeg.c:349: warning: implicit declaration of function `jpeg_read_scanlines'
    jpeg.c:355: warning: implicit declaration of function `jpeg_finish_decompress'
    jpeg.c:358: warning: implicit declaration of function `jpeg_destroy_decompress'
    jpeg.c:229: warning: unused variable `jerr'
    jpeg.c:228: warning: unused variable `cinfo'
    make[3]: *** [jpeg.lo] Error 1
    make[3]: Leaving directory `/opt/sam2410/libminigui-1.3.3/src/mybmp'
    make[2]: *** [all-recursive] Error 1
    make[2]: Leaving directory `/opt/sam2410/libminigui-1.3.3/src'
    make[1]: *** [all-recursive] Error 1
    make[1]: Leaving directory `/opt/sam2410/libminigui-1.3.3'
    make: *** [all] Error 2
    [root@localhost libminigui-1.3.3]# cd $HOME
    [root@localhost root]# vi .bashrc

    出了错了.在

    [user]# cd libminigui-1.3.3
    [user]#  make menuconfig

     顶部
    amdloveme 发表于: 2006/12/19 05:22pm
    不得不顶
    楼主简直就想是漆黑中的荧火虫
    让我看到 黎明就要来了 。。
    我自己估计摸索了2周,也配置不好环境 ,可能是版本的问题,用的是 1。6。9的 。老出错。
     顶部
    gledward 发表于: 2006/12/22 10:50am
    楼主,我用的是libminigui-1.62,在交叉编译时,就是无法执行make menuconfig,所以我 只有用./configure配置,命令如下:

    edward@gl:~/soft/libminigui-str-1.6.2> ./configure --prefix=/opt/uClinux/bfin-uclinux --build=i386-linux --host=bfin-uclinux-gcc
    --target=bfin-uclinux-gcc --with-osname=uclinux --enable-lite --disable-micemoveable --disable-video-qvfb --disable-vbfsupport --disable-imegb2312 --disable-imegb2312pinyin

    却出现了下面的错误:
    checking build system type... i386-pc-linux-gnu
    checking host system type... Invalid configuration `/bfin-uclinux-gcc': machine `/bfin-uclinux' not recognized
    configure: error: /bin/sh ./config.sub/bfin-uclinux-gcc failed
    为什么会这样呢?
    清指教~~

     顶部
    wonder 发表于: 2006/12/24 00:13am
    楼主,我在./configure的时出现了 error:cannot guess build type:you must specify 到底是什么问题啊?我的邮箱是password_1984@tom.com
     顶部
    panhui123456 发表于: 2006/12/25 03:05pm
    按照你上面的步骤开发环境搭建成功,但是在目标板上执行出现如下错误,请指教

    ./helloword:error while loading shared libraries:/lib/libminigui-1.3.so.3:undefined symbol:g_SyslogFot

     顶部
    zyz1211 发表于: 2007/01/13 12:21pm
    大侠,我按照你的步骤把程序移植到开发板上了,可是在执行mginit时,老报错:can not load shared resource! 我已经调了一周还是解决不了,望大侠指点呀
     顶部
    ds 发表于: 2007/01/14 10:54am
    楼主和各位高手:
       在装zlib库的时候,楼主说要手动临时把 gcc 修改成指向我们的交叉编译器arm-linux-gcc
    文中说:
    [Root]# cd /usr/bin
    [Root]# mv gcc gcc_back
    [Root]# ln -s /usr/local/arm/2.95.3/bin/arm-linux-gcc ./gcc
    [Root]# mv ld ld_back
    [Root]# ln -s /usr/local/arm/2.95.3/bin/arm-linux-ld ./ld

    用完之后要改回去,请问是不是这么改回去:
    [Root]# cd /usr/bin
    [Root]# mv gcc_back gcc
    [Root]# ln -s /usr/bin/gcc ./gcc
    [Root]# mv ld_back ld
    [Root]# ln -s /usr/bin/ld ./ld
    我不能确定,向各位请教一下

     顶部
    ds 发表于: 2007/01/14 10:55am
    楼主和各位高手:
      在装zlib库的时候,楼主说要手动临时把 gcc 修改成指向我们的交叉编译器arm-linux-gcc
    文中说:
    [Root]# cd /usr/bin
    [Root]# mv gcc gcc_back
    [Root]# ln -s /usr/local/arm/2.95.3/bin/arm-linux-gcc ./gcc
    [Root]# mv ld ld_back
    [Root]# ln -s /usr/local/arm/2.95.3/bin/arm-linux-ld ./ld
    用完之后要改回去,请问是不是这么改回去:
    [Root]# cd /usr/bin
    [Root]# mv gcc_back gcc
    [Root]# ln -s /usr/bin/gcc ./gcc
    [Root]# mv ld_back ld
    [Root]# ln -s /usr/bin/ld ./ld
    我不能确定,向各位请教一下

     顶部
    mymstm 发表于: 2007/01/16 08:35pm
    "同时修改 /opt/rootfs/etc/ld.so.conf ,在里面最后新加入一行  /usr/local/lib

    然后执行 [Root] ldconfig –r /opt/rootfs     //把 rootfs 当成根目录,执行"

    我的不能通过,为啥?

     顶部
    ma780717 发表于: 2007/01/19 10:36am
    如何增加对EXIF图像的支持?
     顶部
    billtian 发表于: 2007/01/22 09:23am

    下面引用由ds2007/01/14 10:55am 发表的内容:
    楼主和各位高手:
      在装zlib库的时候,楼主说要手动临时把 gcc 修改成指向我们的交叉编译器arm-linux-gcc
    文中说:
    # cd /usr/bin# mv gcc gcc_back
    ...


    直接把名字改回去即可,
     顶部
    billtian 发表于: 2007/01/22 09:36am
    我在PPC开发环境下安装MINIGUI,出现以下错误,大家帮忙看看啊
    [root@localhost libminigui-1.3.3]# make menuconfig
    make -C scripts/lxdialog -f makefile.lx all
    make[1]: Entering directory `/gui/libminigui-1.3.3/scripts/lxdialog'
    make[1]: Leaving directory `/gui/libminigui-1.3.3/scripts/lxdialog'
    /bin/sh scripts/Menuconfig configs/config.in
    Using defaults found in .config
    Preparing scripts: functions, parsing..............done.

    Saving your MiniGUI configuration...
    install prefix = /LinuPPC/CDK/bin
    compiler = ppc-linux-gcc
    target = ppc-linux
    host = ppc-linux
    checking build system type... i386-pc-linux-gnu
    checking host system type... powerpc-unknown-linux-gnu
    checking target system type... powerpc-unknown-linux-gnu
    checking for ppc-linux-gcc... ppc-linux-gcc
    checking for C compiler default output... configure: error: C compiler cannot create executables
    See `config.log' for more details.


    *** End of MiniGUI configuration.
    *** Next, you must run 'make'.

    [root@localhost libminigui-1.3.3]# make
    /bin/sh ./config.status --recheck
    ./config.status: ./config.status: 没有那个文件或目录
    make: *** [config.status] Error 127

    config.log
    文件内容如下:
    This file contains any messages produced by compilers while
    running configure, to aid debugging if configure makes a mistake.

    It was created by configure, which was
    generated by GNU Autoconf 2.57.  Invocation command line was

     $ ./configure --prefix=/LinuxPPC/CDK/bin --target=ppc-linux --host=ppc-linux --enable-lite --disable-micemoveable --enable-debug --enable-msgstr --disable-nativegal --disable-videoqvfb --disable-videoecoslcd --enable-mpc823ial --disable-nativeps2 --disable-nativeimps2 --disable-nativems --disable-nativems3 --disable-vbfsupport --disable-type1support --disable-jpgsupport --disable-pngsupport --disable-imegb2312py --build=i386-linux

    ## --------- ##
    ## Platform. ##
    ## --------- ##

    hostname = localhost.localdomain
    uname -m = i686
    uname -r = 2.4.20-8
    uname -s = Linux
    uname -v = #1 Thu Mar 13 17:54:28 EST 2003

    /usr/bin/uname -p = unknown
    /bin/uname -X     = unknown

    /bin/arch              = i686
    /usr/bin/arch -k       = unknown
    /usr/convex/getsysinfo = unknown
    hostinfo               = unknown
    /bin/machine           = unknown
    /usr/bin/oslevel       = unknown
    /bin/universe          = unknown

    PATH: /usr/kerberos/sbin
    PATH: /usr/kerberos/bin
    PATH: /usr/local/sbin
    PATH: /usr/local/bin
    PATH: /sbin
    PATH: /bin
    PATH: /usr/sbin
    PATH: /usr/bin
    PATH: /usr/X11R6/bin
    PATH: /sbin
    PATH: /usr/local
    PATH: /usr/local/bin
    PATH: /root/bin
    PATH: /sbin
    PATH: /usr/local
    PATH: /usr/local/bin
    PATH: /sbin
    PATH: /usr/local
    PATH: /usr/local/bin
    PATH: /sbin
    PATH: /usr/local
    PATH: /usr/local/bin


    ## ----------- ##
    ## Core tests. ##
    ## ----------- ##

    configure:1636: checking build system type
    configure:1654: result: i386-pc-linux-gnu
    configure:1662: checking host system type
    configure:1676: result: powerpc-unknown-linux-gnu
    configure:1684: checking target system type
    configure:1698: result: powerpc-unknown-linux-gnu
    configure:1721: checking for ppc-linux-gcc
    configure:1747: result: ppc-linux-gcc
    configure:2029: checking for C compiler version
    configure:2032: ppc-linux-gcc --version </dev/null >&5
    ./configure: line 1: ppc-linux-gcc: command not found
    configure:2035: $? = 127
    configure:2037: ppc-linux-gcc -v </dev/null >&5
    ./configure: line 1: ppc-linux-gcc: command not found
    configure:2040: $? = 127
    configure:2042: ppc-linux-gcc -V </dev/null >&5
    ./configure: line 1: ppc-linux-gcc: command not found //为什么显示找不到
    configure:2045: $? = 127
    configure:2069: checking for C compiler default output
    configure:2072: ppc-linux-gcc    conftest.c  >&5
    ./configure: line 1: ppc-linux-gcc: command not found
    configure:2075: $? = 127
    configure: failed program was:
    | #line 2048 "configure"
    | /* confdefs.h.  */
    |
    | #define PACKAGE_NAME ""
    | #define PACKAGE_TARNAME ""
    | #define PACKAGE_VERSION ""
    | #define PACKAGE_STRING ""
    | #define PACKAGE_BUGREPORT ""
    | /* end confdefs.h.  */
    |
    | int
    | main ()
    | {
    |
    |   ;
    |   return 0;
    | }
    configure:2114: error: C compiler cannot create executables
    See `config.log' for more details.

    ## ---------------- ##
    ## Cache variables. ##
    ## ---------------- ##

    ac_cv_build=i386-pc-linux-gnu
    ac_cv_build_alias=i386-linux
    ac_cv_env_CC_set=set
    ac_cv_env_CC_value=ppc-linux-gcc
    ac_cv_env_CFLAGS_set=
    ac_cv_env_CFLAGS_value=
    ac_cv_env_CPPFLAGS_set=
    ac_cv_env_CPPFLAGS_value=
    ac_cv_env_CPP_set=set
    ac_cv_env_CPP_value='gcc -E'
    ac_cv_env_LDFLAGS_set=
    ac_cv_env_LDFLAGS_value=
    ac_cv_env_build_alias_set=set
    ac_cv_env_build_alias_value=i386-linux
    ac_cv_env_host_alias_set=set
    ac_cv_env_host_alias_value=ppc-linux
    ac_cv_env_target_alias_set=set
    ac_cv_env_target_alias_value=ppc-linux
    ac_cv_host=powerpc-unknown-linux-gnu
    ac_cv_host_alias=ppc-linux
    ac_cv_prog_CC=ppc-linux-gcc
    ac_cv_target=powerpc-unknown-linux-gnu
    ac_cv_target_alias=ppc-linux

    ## ----------------- ##
    ## Output variables. ##
    ## ----------------- ##

    ACLOCAL=''
    ADS_IAL_ENGINE_FALSE=''
    ADS_IAL_ENGINE_TRUE=''
    ALLOCA=''
    AMDEPBACKSLASH=''
    AMDEP_FALSE=''
    AMDEP_TRUE=''
    AMTAR=''
    AUTOCONF=''
    AUTOHEADER=''
    AUTOMAKE=''
    AWK='gawk'
    BIG5_SUPPORT_FALSE=''
    BIG5_SUPPORT_TRUE=''
    CC='ppc-linux-gcc'
    CCDEPMODE=''
    CFLAGS=''
    CPP='gcc -E'
    CPPFLAGS=''
    DEFS=''
    DEPDIR=''
    DUMMY_IAL_ENGINE_FALSE=''
    DUMMY_IAL_ENGINE_TRUE=''
    ECHO='echo'
    ECHO_C=''
    ECHO_N='-n'
    ECHO_T=''
    EGREP=''
    EP7211_IAL_ENGINE_FALSE=''
    EP7211_IAL_ENGINE_TRUE=''
    EUCKR_SUPPORT_FALSE=''
    EUCKR_SUPPORT_TRUE=''
    EXEEXT=''
    FLAT_WINDOW_STYLE_FALSE=''
    FLAT_WINDOW_STYLE_TRUE=''
    GB18030_SUPPORT_FALSE=''
    GB18030_SUPPORT_TRUE=''
    GBK_SUPPORT_FALSE=''
    GBK_SUPPORT_TRUE=''
    GB_SUPPORT_FALSE=''
    GB_SUPPORT_TRUE=''
    GIF_FILE_SUPPORT_FALSE=''
    GIF_FILE_SUPPORT_TRUE=''
    HAS_FREETYPE2_FALSE=''
    HAS_FREETYPE2_TRUE=''
    HELIO_IAL_ENGINE_FALSE=''
    HELIO_IAL_ENGINE_TRUE=''
    IME_GB2312_PINYIN_SUPPORT_FALSE=''
    IME_GB2312_PINYIN_SUPPORT_TRUE=''
    IME_GB2312_SUPPORT_FALSE=''
    IME_GB2312_SUPPORT_TRUE=''
    INSTALL_DATA=''
    INSTALL_PROGRAM=''
    INSTALL_SCRIPT=''
    INSTALL_STRIP_PROGRAM=''
    IPAQ_IAL_ENGINE_FALSE=''
    IPAQ_IAL_ENGINE_TRUE=''
    JPG_FILE_SUPPORT_FALSE=''
    JPG_FILE_SUPPORT_TRUE=''
    LBM_FILE_SUPPORT_FALSE=''
    LBM_FILE_SUPPORT_TRUE=''
    LDFLAGS=''
    LIBGGI_ENGINE_FALSE=''
    LIBGGI_ENGINE_TRUE=''
    LIBOBJS=''
    LIBS=''
    LIBTOOL=''
    LIB_VCONGUI_FALSE=''
    LIB_VCONGUI_TRUE=''
    LITE_VERSION_FALSE=''
    LITE_VERSION_TRUE=''
    LN_S=''
    LTLIBOBJS=''
    LT_AGE='0'
    LT_CURRENT='3'
    LT_RELEASE='1.3'
    LT_REVISION='0'
    MAKEINFO=''
    MISC_ABOUTDLG_FALSE=''
    MISC_ABOUTDLG_TRUE=''
    MiniGUI_BINARY_AGE='0'
    MiniGUI_INTERFACE_AGE='0'
    MiniGUI_MAJOR_VERSION='1'
    MiniGUI_MICRO_VERSION='3'
    MiniGUI_MINOR_VERSION='3'
    MiniGUI_VERSION='1.3.3'
    NATIVE_GAL_ENGINE_FALSE=''
    NATIVE_GAL_ENGINE_TRUE=''
    NATIVE_IAL_ENGINE_FALSE=''
    NATIVE_IAL_ENGINE_TRUE=''
    OBJEXT=''
    PACKAGE=''
    PACKAGE_BUGREPORT=''
    PACKAGE_NAME=''
    PACKAGE_STRING=''
    PACKAGE_TARNAME=''
    PACKAGE_VERSION=''
    PATH_SEPARATOR=':'
    PCX_FILE_SUPPORT_FALSE=''
    PCX_FILE_SUPPORT_TRUE=''
    PNG_FILE_SUPPORT_FALSE=''
    PNG_FILE_SUPPORT_TRUE=''
    PX255B_IAL_ENGINE_FALSE=''
    PX255B_IAL_ENGINE_TRUE=''
    RANLIB=''
    RBF_SUPPORT_FALSE=''
    RBF_SUPPORT_TRUE=''
    SET_MAKE=''
    SHELL='/bin/sh'
    SHIFTJIS_SUPPORT_FALSE=''
    SHIFTJIS_SUPPORT_TRUE=''
    STAND_ALONE_FALSE=''
    STAND_ALONE_TRUE=''
    STRIP='strip'
    SVGALIB_ENGINE_FALSE=''
    SVGALIB_ENGINE_TRUE=''
    SYSTEM_LIBS=''
    TFSTB_IAL_ENGINE_FALSE=''
    TFSTB_IAL_ENGINE_TRUE=''
    TGA_FILE_SUPPORT_FALSE=''
    TGA_FILE_SUPPORT_TRUE=''
    THOR_IAL_ENGINE_FALSE=''
    THOR_IAL_ENGINE_TRUE=''
    TTF_SUPPORT_FALSE=''
    TTF_SUPPORT_TRUE=''
    TYPE1_SUPPORT_FALSE=''
    TYPE1_SUPPORT_TRUE=''
    UJIS_SUPPORT_FALSE=''
    UJIS_SUPPORT_TRUE=''
    USE_NEWGAL_FALSE=''
    USE_NEWGAL_TRUE=''
    VBF_SUPPORT_FALSE=''
    VBF_SUPPORT_TRUE=''
    VERSION=''
    VGA16_GAL_ENGINE_FALSE=''
    VGA16_GAL_ENGINE_TRUE=''
    VIDEO_CFLAGS=''
    VIDEO_DRIVERS=''
    VIDEO_SUBDIRS=''
    VR4181_IAL_ENGINE_FALSE=''
    VR4181_IAL_ENGINE_TRUE=''
    ac_ct_CC=''
    ac_ct_RANLIB=''
    ac_ct_STRIP=''
    am__include=''
    am__quote=''
    bindir='${exec_prefix}/bin'
    build='i386-pc-linux-gnu'
    build_alias='i386-linux'
    build_cpu='i386'
    build_os='linux-gnu'
    build_vendor='pc'
    datadir='${prefix}/share'
    exec_prefix='NONE'
    host='powerpc-unknown-linux-gnu'
    host_alias='ppc-linux'
    host_cpu='powerpc'
    host_os='linux-gnu'
    host_vendor='unknown'
    includedir='${prefix}/include'
    infodir='${prefix}/info'
    install_sh=''
    libdir='${exec_prefix}/lib'
    libexecdir='${exec_prefix}/libexec'
    localstatedir='${prefix}/var'
    mandir='${prefix}/man'
    oldincludedir='/usr/include'
    prefix='/LinuxPPC/CDK/bin'
    program_transform_name='s,x,x,'
    sbindir='${exec_prefix}/sbin'
    sharedstatedir='${prefix}/com'
    sysconfdir='${prefix}/etc'
    target='powerpc-unknown-linux-gnu'
    target_alias='ppc-linux'
    target_cpu='powerpc'
    target_os='linux-gnu'
    target_vendor='unknown'

    ## ----------- ##
    ## confdefs.h. ##
    ## ----------- ##

    #define PACKAGE_BUGREPORT ""
    #define PACKAGE_NAME ""
    #define PACKAGE_STRING ""
    #define PACKAGE_TARNAME ""
    #define PACKAGE_VERSION ""

    configure: exit 77

     顶部
    yanggb 发表于: 2007/01/26 10:35pm
    各位好:
       小弟刚刚接触minigui仅仅一两天时间,有许多地方实在不明白,希望各位大侠给个指点,问题如下:
       1:引用楼主大侠的原语:"假设你已经有一个可以在板子上跑的 Linux 系统了,并且已经有一个可以用的根文件系统了."
         请问minigui的库以及资源还有配置文件应该存放在这个根文件系统的什么位置呢?
      2: "mkdir –p /opt/rootfs/usr/local/[lib,etc] "
          这一句实在不明白是什么意思啊.
      3:"同时修改 /opt/rootfs/etc/ld.so.conf ,在里面最后新加入一行  /usr/local/lib "
         刚建立的目录怎么会有ld.so.conf这个文件呢?实在不明白啊.
      4:"mknod /dev/ttyp5 c 3 5
    mknod /dev/ptyp5 c 2 5

    cd /usr/local/lib/shared/miniguiapps/mginit
    ./mgini
    "
        是加在linuxrc文件的后面吗?可是刚建立的/opt/rootfs不会有linuxrc文件啊,
      5:"如果运行时显示没有 mknod 命令,请检查一下你的 busybox 的配置 :) "
       不知道如何检查啊.
      小弟愚昧,感觉问的问题应该挺幼稚的,但是我却不知道如何解决,还请各位大侠指教.
      谢谢!

     顶部
    yanggb 发表于: 2007/01/26 10:46pm
    再补上一个问题啊:
       "checking for jpeg_std_error in -ljpeg... yes           // jpeg 支持
    "
       这里不管怎么做,死活都是"no",大侠们啊,赶紧现身指点一下小弟哦,头晕啊.
     顶部
    发表于: 2007/01/30 06:23pm
    看看,看能不能按照这个方法,移植到ARM7板子上,uClinux系统下
     顶部
    warjary 发表于: 2007/02/01 10:49am
    写的太好了
    看来也是牛人一个啊
    我编译支持jpeg结果 libminigui库很大啊 ,有2m  ,我的板子放库的ramdisk文件系统空间不够,我把库移到其他地方,然后ramdisk底下建一个指向我放库的地方,结果还是不行,如果在ld.so.conf下面在添加一个放库的目录不知道行不行,不过在开发板的文件系统下好象没有ld.so.conf这个文件,请指教
     顶部
    misterji 发表于: 2007/02/01 10:36pm
    楼主!!去的问几个肤浅的问题!!去就的LINUX下操作的所以全是粘帖作的但是JEPG部分没装上!!还有我在执行libminigui-1.3.3
    make menuconfig
    make

     我的不能通过:                    

    arm-linux-gcc -shared  template.lo -Wl,--whole-archive control/.libs/libcontrol.
    al font/.libs/libfont.al ial/.libs/libial.al gui/.libs/libgui.al ime/.libs/libim
    e.al main/.libs/libmain.al misc/.libs/libmisc.al mybmp/.libs/libmybmp.al kernel/
    .libs/libkernel.al sysres/.libs/libsysres.al server/.libs/libserver.al client/.l
    ibs/libclient.al newgal/.libs/libnewgal.al newgdi/.libs/libnewgdi.al -Wl,--no-wh
    ole-archive  control/.libs/libcontrol.al font/.libs/libfont.al ial/.libs/libial.
    al gui/.libs/libgui.al ime/.libs/libime.al main/.libs/libmain.al misc/.libs/libm
    isc.al mybmp/.libs/libmybmp.al kernel/.libs/libkernel.al sysres/.libs/libsysres.
    al server/.libs/libserver.al client/.libs/libclient.al newgal/.libs/libnewgal.al
    newgdi/.libs/libnewgdi.al /usr/lib/libttf.so -lm  -Wl,-soname -Wl,libminigui-1.
    3.so.3 -o .libs/libminigui-1.3.so.3.0.0
    /usr/local/arm/2.95.3/arm-linux/bin/ld: template.lo: Relocations in generic ELF
    (EM: 3)
    template.lo: could not read symbols: File in wrong format
    collect2: ld returned 1 exit status
    make[3]: *** [libminigui.la] Error 1
    make[3]: Leaving directory `/opt/st2410/libminigui-1.3.3/src'
    make[2]: *** [all-recursive] Error 1
    make[2]: Leaving directory `/opt/st2410/libminigui-1.3.3/src'
    make[1]: *** [all-recursive] Error 1
    make[1]: Leaving directory `/opt/st2410/libminigui-1.3.3'
    make: *** [all] Error 2

     顶部
    victoire 发表于: 2007/02/06 01:54pm
    不错,学习中
     顶部
    bance 发表于: 2007/03/13 00:04am
    根据楼主的钢领性指导文件,就自己在编译配置MINIGUI的过程中遇到的问题总结一下.

    MINIGUI中用到的几个包最好与楼主文中叙述的保持一致,这些是没有问题的,目的主要是要生成
    libjpeg.a          libmgext-1.3.so.3        libminigui.a   libpng.so.2            libttf.a                 libz.so
    libjpeg.la         libmgext-1.3.so.3.0.0    libminigui.la  libpng.so.2.1.0.10rc1  libttf.so              libz.so.1
    libjpeg.so        libmgext.a               libminigui.so  libpopt.a              libvcongui-1.3.so.3      libz.so.1.2.3
    libjpeg.so.62      libmgext.la              libm.so        libpopt.la             libvcongui-1.3.so.3.0.0  minigui
    libjpeg.so.62.0.0  libmgext.so              libm.so.6      libpopt.so             libvcongui.a             shared
    libm-2.2.3.so      libminigui-1.3.so.3      libpng.a       libpopt.so.0           libvcongui.la
    libm.a             libminigui-1.3.so.3.0.0  libpng.so      libpopt.so.0.0.0       libvcongui.so
    这些文件,实际上MINIGUI中用到的是其中的.so文件,它们会被当做静态联接库在minigui程序起动的时候被加载(注意,不是运行的时候加载,那是动态联接库的作用),所以这些.so文件的编译的格式,其存放的位置是关键.
    对于每一次编译的结果可以用file命令去查看.其中要说明的是对很多同名但不同后缀的.so文件它们指向带有版本号的实体文件,有的甚至要指两层,如下:

    [root@localhost lib]# file libpng.so
    libpng.so: symbolic link to libpng.so.2
    [root@localhost lib]# file libpng.so.2
    libpng.so.2: symbolic link to libpng.so.2.1.0.10rc1
    [root@localhost lib]# file libpng.so.2.1.0.10rc1
    libpng.so.2.1.0.10rc1: ELF 32-bit LSB shared object, ARM, version 1 (ARM), stripped

    这是libpng.so,libpng.so.2,libpng.so.2.1.0.10rc1三个文件的指向关系,其中前两个是符号链.stripped表示用arm-linux-strip对文件进行过减肥,对嵌入式是很有好处的:)

    这里边要注意的是符号链不能有断的例如:
    libjpeg.so: broken symbolic link to .....

    特别是在楼主提到的:
    /*   引自原文 */
    下面把资源文件也拷过来,还记得吗,在前面 搭建 PC 环境中讲过安装资源文件,它被装在了 /usr/local/lib 目录下,一个叫 minigui 的目录,我们要做的就是把它拷过来

    [Root]# cp –r –a /usr/local/lib/minigui  /opt/rootfs/usr/local/    连目录一起拷过来,目录结构和主机一样

    /*  结束  */

    有些符号链容易断裂,可以用
    [root@localhost lib]# rm libjpeg.so
    [root@localhost lib]# ln -s ./libjpeg.so.62 libjpeg.so
    来重新联接起来.这个地方建议用 ./ ../ ../../ 之类的相对路径来联接文件而不是/usr/local/lib之类的绝对路径,要不在生成的root.cramfs文件中可能会出问题(未验证).建议在生成root.cramfs的时候将这些符号链都检查一遍.

    在检查实体文件过程中如果出现类似:
    libjpeg.so.62.0.0: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV),stripped
    说明你用的gcc编译器错了,编译成了X86下面的指令代码了.重新按照指导钢领作一便吧:)

    不过按照楼主的过程,MINIGUI还是在运行过程中报告类似“ Can not attach shared resource ! ”的错误,于是用arm-linux-readelf(很好用的程序分析工具)跟进去:

    [root@localhost lib]# arm-linux-readelf -a libminigui-1.3.so.3.0.0  | grep "Shared library"
    0x00000001 (NEEDED)                     Shared library: [/usr/lib/libttf.so]
    0x00000001 (NEEDED)                     Shared library: [libjpeg.so.62]
    0x00000001 (NEEDED)                     Shared library: [libpng.so.2]
    0x00000001 (NEEDED)                     Shared library: [libm.so.6]
    0x00000001 (NEEDED)                     Shared library: [libc.so.6]
    libmnigui-1.3.so.3.0.0只调用指定放在/usr/lib/libttf.so的文件,对其它的静态文件却没有要求.于是将原来
    /*   引自原文 */
    [Root]# mkdir –p /opt/rootfs/usr/local/[lib,etc]
    把 /usr/local/arm/2.95.3/arm-linux/lib 中相应的库拷到 /opt/rootfs/usr/local/lib 目录下去
    /*  结束  */
    改放到 /opt/rootfs/usr/lib下,同时清空 /opt/rootfs/usr/local/lib目录 (*注意*这一点很要命,如果同时存在则在运行时会报段错误,至今没弄明白.)

    在进行[Root] ldconfig –r /opt/rootfs的时候要保证你是root用户,要不会提示找不到ldconfig命令(该命令位于/sbin目录下),在运行的时候报出类似:ldconfig: /lib/libttf.so.2 is not a symbolic link的错误,有好多条.
    像上边一样,依葫芦画瓢如果libttf.so.2文件是实体文件,就用rm /lib/libttf.so.2删去,然后用ln -s /usr/lib/libttf.so libttf.so在同样的位置给它用我们生成的文件建一个符号链.(有两个错误指向的文件没见过,放它一马)

    在生成cramfs文件的时候要注意,一般开发板上放的根文件系统都是压缩格式的cramfs,在板子运行时对其是不允许进行写操作的,所以很多开发板自带的文件系统中并没有/var,/tmp目录,它们是指向/etc/var,/etc/tmp的符号链.但MINIGUI在运行的时候是需要/var/tmp目录的,于是在负责加载起动的/usr/etc/rc.local文件中加入
    mkdir /var/tmp
    要不然启动时会报error in step 7的错误.

    对于生成的cramfs文件可以使用[root@localhost sbin]# mount -o loop /rootfs /mnt/ttt来挂载到相应的目录,方便查看于对比.

    到此问题结束,说的不对的地方欢迎指正.

     顶部
    emax2004 发表于: 2007/03/20 08:38pm
    我按照楼主的步骤,前面都很成功,但是在编译libminigui-1.3.3时出错,
    make menuconfig配置完成之后,显示
    checking for FrameBuffer console support... yes
    checking for TT_FreeType_Version in -lttf... yes
    checking for jpeg_std_error in -ljpeg... no
    checking for png_check_sig in -lpng... yes
    checking for pow in -lm... yes
    Make 时的出错信息:
    /usr/local/arm/2.95.3/arm-linux/bin/ld: template.lo: Relocations in generic ELF
    (EM: 3)
    template.lo: could not read symbols: File in wrong format
    collect2: ld returned 1 exit status
    make[3]: *** [libminigui.la] Error 1
    make[3]: Leaving directory `/home/minigui/s3c2440/libminigui-1.3.3/src'
    make[2]: *** [all-recursive] Error 1
    make[2]: Leaving directory `/home/minigui/s3c2440/libminigui-1.3.3/src'
    make[1]: *** [all-recursive] Error 1
    make[1]: Leaving directory `/home/minigui/s3c2440/libminigui-1.3.3'
    make: *** [all] Error 2

    请问这是什么原因?

     顶部
    bance 发表于: 2007/03/20 08:46pm

    貌似是你的libjpeg编译的有问题

    检查一个生成的.so文件

     顶部
    emax2004 发表于: 2007/03/21 08:08pm
    我重新编译了libjpeg.so等文件,configure libminigui时:checking for jpeg_std_error in -ljpeg... yes,但是make时依然出错,信息如下:
    /usr/local/arm/2.95.3/arm-linux/bin/ld: template.lo: Relocations in generic ELF
    (EM: 3)
    template.lo: could not read symbols: File in wrong format
    collect2: ld returned 1 exit status
    make[3]: *** [libminigui.la] Error 1
    make[3]: Leaving directory `/home/minigui/s3c2440/libminigui-1.3.3/src'
    make[2]: *** [all-recursive] Error 1
    make[2]: Leaving directory `/home/minigui/s3c2440/libminigui-1.3.3/src'
    make[1]: *** [all-recursive] Error 1
    make[1]: Leaving directory `/home/minigui/s3c2440/libminigui-1.3.3'
    make: *** [all] Error 2
    检查template.lo文件,显示i386格式,并非ARM文件,不知道怎么编译temlate.lo为ARM格式文件?

     顶部
    yangyang0433 发表于: 2007/03/22 05:16pm
    楼主辛苦了!!
    我在PC上用qvfb显示helloworld时
    怎么说
    NEWGAL:Set video mode failure.
    GDI:Can not initialize graphics engine!
    InitGUI failure when using /usr/local/etc/MiniGUI.cfg as cfg file.
    Video mode smaller than requested
    求助楼主!!!!
    急用!
    谢!
     顶部
    dedodong 发表于: 2007/03/22 05:52pm
    Video mode smaller than requested

    可能是要设置下你的  qvfb,你的QVBF设置得太小了,一般设置为800*600或者1024*768

    看你的MiniGUI.cfg 怎么设咯

     顶部
    yangyang0433 发表于: 2007/03/22 11:47pm
    我已经按要求设置好了!
    结果还是不行啊
     顶部
    xiong7666 发表于: 2007/03/23 11:09am
    大感谢你了,大哥,,minigui资料太少,我正需要的就这些,
    魏永明那小子该批评一下,做这个的老大也不叫人多写些资料,搜来搜去就他那几篇资料,人先要入门才好学嘛.
     顶部
    caijian 发表于: 2007/03/26 09:18am

    下面引用由victoire2007/02/06 01:54pm 发表的内容:
    不错,学习中


     顶部
    michaelqzq 发表于: 2007/03/26 09:33pm
    有请版主帮忙。
    我的系统是cpu :amd 2800+ . os :fedora core 3
    按照你说的用./configure --prefix=/usr/local/arm/2.95.3/arm-linux/ CC=arm-linux-gcc --enable-shared --enable-static 配置,安装 jpeg 库,make后总是找不到libtool.
    但是用./configure --prefix=/usr/local/arm/2.95.3/arm-linux/ --host=arm-linux --enable-shared --enable-static 配置时可以通过并且make install 也能通过~ 但是 进入到libminigui , make menuconfig时jpeg库还是没有正确安装。
    请问这是什么原因。你上面说的你的那种方法“ 比如我把 arm-linux-gcc 装在 /usr/local/arm/2.95.3/bin 下,就把这个路径加到你的 PATH 环境变量中去” 能不能具体一些。我的目录 和你的一样。 我还试了其他方法还是不行。
    有请版主,高手帮忙。万分感谢。

     顶部
    yangyang0433 发表于: 2007/03/26 11:07pm
    高手解决!!!!
    为什么我把mg-examples-1.3.0里的源代码改一点就会出现错误呢?
    不是什么错误,就是再次编译后执行就全变成乱码了?????
    怎么回事呢?
    我也没改别的,就是改一个按钮上的字,结果就都变成乱码了
    崩溃了!!!!!!!!!!!!!!!!!!!!!!!!
     顶部
    yangyang0433 发表于: 2007/03/27 11:28pm
    记着把刚才改过的 gcc 再改回去,不然后面会出错的!!!!!

    高手指教:: 如何改回去?
    谢谢

     顶部
    小手冰凉 发表于: 2007/03/30 02:50pm

    下面引用由yangyang04332007/03/27 11:28pm 发表的内容:
    记着把刚才改过的 gcc 再改回去,不然后面会出错的!!!!!
    高手指教 如何改回去?
    谢谢


    cd /usr/bin
    rm gcc
    mv gcc_back gcc

    rm ld
    mv ld_back ld

    就这样OK
     顶部
    小手冰凉 发表于: 2007/03/30 02:54pm

    下面引用由eMax20042007/03/20 08:38pm 发表的内容:
    我按照楼主的步骤,前面都很成功,但是在编译libminigui-1.3.3时出错,
    make menuconfig配置完成之后,显示
    checking for FrameBuffer console support... yes
    checking for TT_FreeType_Version in -lttf... yes
    ...


    我也是同样的checking ljpeg no
    后来修改了jpeg库的Makefile 中CC=arm-linux-gcc
    然后make
    checking ljpeg 就是yes了
     顶部
    yangyang0433 发表于: 2007/03/30 09:41pm
    多谢!!!太及时了!!呵呵
     顶部
    yangyang0433 发表于: 2007/03/30 11:04pm

    下面引用由小手冰凉2007/03/30 02:54pm 发表的内容:
    我也是同样的checking ljpeg no
    后来修改了jpeg库的Makefile 中CC=arm-linux-gcc
    然后make
    checking ljpeg 就是yes了


    修改完CC=arm-linux-gcc后做什么呢?
    是重新编译jpeg库
    还是进行make menuconfig呢?
    请指教!!!
     顶部
    ccanimal 发表于: 2007/03/30 11:05pm
    请教请教:
    在执行到./helloworld的时候产生错误,不知道怎么解决。
    如下:
    [root@localhost src]# ./helloworld
    No available video device
    NEWGAL:Does not find matched engine:qvfb.
    GDI:Can not get graphics engine information!
    InitGUI failure when using /usr/local/etc/MiniGui.cfg as cfg file.
    我换了一台机器操作,还是出现这样的问题。
    之前的所有步骤都是正确的,请问这样的问题怎么解决?难道是qvfb的版本不对还是?
    请教大侠指点一二,谢谢谢谢谢谢,着急呀。。。
     顶部
    ccanimal 发表于: 2007/03/31 11:39pm
    ◎◎◎◎◎◎◎◎◎◎◎◎
    ############
    ¥¥¥¥¥¥¥¥¥¥¥¥

    楼上编译过去的大哥,请问我的问题怎么解决呢?谢谢谢谢
    ====================================
    请教请教:
    在执行到./helloworld的时候产生错误,不知道怎么解决。
    如下:
    [root@localhost src]# ./helloworld
    No available video device
    NEWGAL:Does not find matched engine:qvfb.
    GDI:Can not get graphics engine information!
    InitGUI failure when using /usr/local/etc/MiniGui.cfg as cfg file.
    我换了一台机器操作,还是出现这样的问题。
    之前的所有步骤都是正确的,请问这样的问题怎么解决?难道是qvfb的版本不对还是?
    请教大侠指点一二,谢谢谢谢谢谢,着急呀。。。

     顶部
    小手冰凉 发表于: 2007/04/02 02:00pm

    下面引用由yangyang04332007/03/30 11:04pm 发表的内容:
    修改完CC=arm-linux-gcc后做什么呢?
    是重新编译jpeg库
    还是进行make menuconfig呢?
    请指教!!!


    重新编译jpeg库
    我是这样的
     顶部
    emax2004 发表于: 2007/04/02 05:14pm
    楼上的哥们:
     我重新编译了libjpeg.so等文件,configure libminigui时:checking for jpeg_std_error in -ljpeg... yes,但是make时依然出错,信息如下:
    /usr/local/arm/2.95.3/arm-linux/bin/ld: template.lo: Relocations in generic ELF
    (EM: 3)
    template.lo: could not read symbols: File in wrong format
    collect2: ld returned 1 exit status
    make[3]: *** [libminigui.la] Error 1
    make[3]: Leaving directory `/home/minigui/s3c2440/libminigui-1.3.3/src'
    make[2]: *** [all-recursive] Error 1
    make[2]: Leaving directory `/home/minigui/s3c2440/libminigui-1.3.3/src'
    make[1]: *** [all-recursive] Error 1
    make[1]: Leaving directory `/home/minigui/s3c2440/libminigui-1.3.3'
    make: *** [all] Error 2
    检查template.lo文件,显示i386格式,并非ARM文件,不知道怎么编译temlate.lo为ARM格式文件?

     顶部
    小手冰凉 发表于: 2007/04/02 05:29pm

    下面引用由eMax20042007/04/02 05:14pm 发表的内容:
    楼上的哥们:
     我重新编译了libjpeg.so等文件,configure libminigui时:checking for jpeg_std_error in -ljpeg... yes,但是make时依然出错,信息如下:
    /usr/local/arm/2.95.3/arm-linux/bin/ld Relocations ...


    你在make menuconfig之前
    指定链接arm下的ljpeg lpng lttf库了吗?
    就是
    cd /usr/lib
    mv libjpeg.so libjpeg.so_back
    ln -s /usr/local/arm/2.95.3/arm-linux/lib/libjpeg.so ./libjpeg.so
     顶部
    yangyang0433 发表于: 2007/04/02 10:17pm

    下面引用由小手冰凉2007/04/02 02:00pm 发表的内容:
    重新编译jpeg库
    我是这样的


    你有时间吗?
    能把你安装jpeg库的详细步骤写一下吗?
    我这还是不行
    谢了
     顶部
    yangyang0433 发表于: 2007/04/02 10:23pm
    小手冰凉 你好,我又碰到别的错误了,不知道你碰到没有
    给你看看
    就安装jpeg库出现了问题
    我做的过程是先解压缩jpegsrc.v6b.tar.gz
    然后进入jpeg-6b目录
    之后是运行命令./configure --prefix=/usr/local/arm/2.95.3/arm-linux/CC=arm-linux-gcc --enable-shared --enable-static
    然后才修改jpeg-6b目录下的Makefile文件
    然后是Make
    我想我哪步做错了呢?
    弄不明白
    如果./configure命令后没有Makefile 文件,所以没法改啊
     顶部
    yangyang0433 发表于: 2007/04/02 10:47pm
    我执行make install命令
    提示的错误是/usr/bin/install:无法创建一般文件“/usr/local/arm/2.95.3/arm-linux/CC=arm-linux-gcc/include/jconfig.h”:没有那个文件或目录
     顶部
    ccanimal 发表于: 2007/04/02 11:19pm
    ◎◎◎◎◎◎◎◎◎◎◎◎
    ############
    ¥¥¥¥¥¥¥¥¥¥¥¥
    楼上编译过去的大哥,请问我的问题怎么解决呢?谢谢谢谢
    ====================================
    请教请教:
    在执行到./helloworld的时候产生错误,不知道怎么解决。
    如下:
    [root@localhost src]# ./helloworld
    No available video device
    NEWGAL:Does not find matched engine:qvfb.
    GDI:Can not get graphics engine information!
    InitGUI failure when using /usr/local/etc/MiniGui.cfg as cfg file.
    我换了一台机器操作,还是出现这样的问题。
    之前的所有步骤都是正确的,请问这样的问题怎么解决?难道是qvfb的版本不对还是?
    请教大侠指点一二,谢谢谢谢谢谢,着急呀。。。

     顶部
    jacky000310 发表于: 2007/04/03 09:30am
    请问各位大虾,交叉编译libminigui-1.3.3时遇到
    /usr/local/arm/2.95.3/arm-linux/bin/ld: template.lo: Relocations in generic ELF
    (EM: 3)
    template.lo: could not read symbols: File in wrong format
    collect2: ld returned 1 exit status
    make[3]: *** [libminigui.la] Error 1
    make[3]: Leaving directory `/home/minigui/s3c2440/libminigui-1.3.3/src'
    make[2]: *** [all-recursive] Error 1
    make[2]: Leaving directory `/home/minigui/s3c2440/libminigui-1.3.3/src'
    make[1]: *** [all-recursive] Error 1
    make[1]: Leaving directory `/home/minigui/s3c2440/libminigui-1.3.3'
    make: *** [all] Error 2
    该怎么办?
    那几个库我都装上了还是不行
     顶部
    小手冰凉 发表于: 2007/04/03 03:04pm

    下面引用由yangyang04332007/04/02 10:47pm 发表的内容:
    我执行make install命令
    提示的错误是/usr/bin/install:无法创建一般文件“/usr/local/arm/2.95.3/arm-linux/CC=arm-linux-gcc/include/jconfig.h”:没有那个文件或目录

    make install之前要在arm-linux下建立目录
    mkdir -p /usr/local/arm/2.95.3/arm-linux/man/ma1
    然后再make install
     顶部
    小手冰凉 发表于: 2007/04/03 03:10pm
    [这个贴子最后由小手冰凉在 2007/04/03 03:14pm 第 1 次编辑]


    下面引用由yangyang04332007/04/02 10:17pm 发表的内容:
    你有时间吗?
    能把你安装jpeg库的详细步骤写一下吗?
    我这还是不行
    谢了


    tar -zxvf jpegsrc.v6b.tar.gz
    cd jpef-6b
    ./configure --prefix=/usr/local/arm/2.95.3/arm-linux --host=arm-linux --enable-shared --enable-static
    修改Makefile文件中CC=arm-linux-gcc//教程中没有一步
    make
    mkdir -p /usr/local/arm/2.95.3/arm-linux/man/man1
    make install
    我是这样安装成功
     顶部
    小手冰凉 发表于: 2007/04/03 03:20pm

    下面引用由yangyang04332007/04/02 10:23pm 发表的内容:
    小手冰凉 你好,我又碰到别的错误了,不知道你碰到没有
    给你看看
    就安装jpeg库出现了问题
    我做的过程是先解压缩jpegsrc.v6b.tar.gz
    ...


    ./configure之后就是生成Makefile文件阿,不然make命令怎么执行呢?
     顶部
    小手冰凉 发表于: 2007/04/03 03:22pm

    下面引用由yangyang04332007/04/02 10:17pm 发表的内容:
    你有时间吗?
    能把你安装jpeg库的详细步骤写一下吗?
    我这还是不行
    谢了


    你用的RH9吗?还是FC?
    我用的是RH9
     顶部
    yangyang0433 发表于: 2007/04/03 11:30pm
    我用的也是rh9
    呵呵
    我再做一次试试
    有问题再请教
     顶部
    yangyang0433 发表于: 2007/04/04 00:06am
    在make menuconfig完了之后又有个错误
    要崩溃了都
    还要麻烦您啊
    呵呵
    template.lo: could not read symbols: File in wrong format
    collect2: ld returned 1 exit status
    make[3]: *** [libminigui.la] Error 1
    make[3]: Leaving directory `/root/opt/s3c44b0/libminigui-1.3.3/src'
    make[2]: *** [all-recursive] Error 1
    make[2]: Leaving directory `/root/opt/s3c44b0/libminigui-1.3.3/src'
    make[1]: *** [all-recursive] Error 1
    make[1]: Leaving directory `/root/opt/s3c44b0/libminigui-1.3.3'
    make: *** [all] Error 2
     顶部
    小手冰凉 发表于: 2007/04/04 09:37am

    下面引用由yangyang04332007/04/04 00:06am 发表的内容:
    在make menuconfig完了之后又有个错误
    要崩溃了都
    还要麻烦您啊
    呵呵
    ...


    编译zlib库之后,你有没有把指向交叉编译的ld改回来?
     顶部
    yangyang0433 发表于: 2007/04/04 10:36am
    我已经改回去了啊
    还是不对
     顶部
    小手冰凉 发表于: 2007/04/04 11:16am

    下面引用由yangyang04332007/04/04 10:36am 发表的内容:
    我已经改回去了啊
    还是不对


    那我就没辙了
    你RH9完全安装了吗?
     顶部
    jacky000310 发表于: 2007/04/04 12:39pm
    我重新解压了一次libminigui再make menuconfig ,再make就可以了
     顶部
    yangyang0433 发表于: 2007/04/04 07:37pm
    再重头做一遍吗?
     顶部
    yangyang0433 发表于: 2007/04/04 07:39pm
    C:\Documents and Settings\YangYang\Local Settings\Temporary Internet Files\Content.IE5\EBMLONIV\18[1].gif
    都完全安装了啊!!@!!
     顶部
    yangyang0433 发表于: 2007/04/04 07:54pm
    我又重做了一遍,
    可是做到安装libttf库的时候又有错了
    呵呵
    崩溃了
    也就是在libttf目录下编译extend文件夹里的内容时
    命令是:arm-linux-gcc -c -fPIC -o2 -I./ extend/*.c
    提示我说
    arm-linux-gcc:cannot specify -o with -c or -S and multiple compilations
    怎么回事呢????
     顶部
    jacky000310 发表于: 2007/04/04 10:16pm
    我是解压了以后,再重新交叉编译一次libminigui,就过了
     顶部
    小手冰凉 发表于: 2007/04/05 10:05am

    下面引用由yangyang04332007/04/04 07:54pm 发表的内容:
    我又重做了一遍,
    可是做到安装libttf库的时候又有错了
    呵呵
    崩溃了
    ...


    -O2 不是小写字母o,是大写字母O
     顶部
    yangyang0433 发表于: 2007/04/05 01:32pm
    哈哈
    之前做过忘了,谢了哈!!!!
     顶部
    yangyang0433 发表于: 2007/04/05 01:35pm
    你好,你说解压之后再重新编译就可以了,能把你的步骤写一下吗?
    谢了
    我已经做一周了,还是不成功
    光系统就装了好几遍,谢谢!!
     顶部
    yangyang0433 发表于: 2007/04/05 01:39pm

    下面引用由jacky0003102007/04/04 10:16pm 发表的内容:
    我是解压了以后,再重新交叉编译一次libminigui,就过了


    你好,你说解压之后再重新编译就可以了,能把你的步骤写一下吗?
    谢了
    我已经做一周了,还是不成功
    光系统就装了好几遍,谢谢!!  
     顶部
    michaelqzq 发表于: 2007/04/05 03:48pm
    yangyang0433
    template.lo: could not read symbols: File in wrong format

    你的问题出在template.c文件没有编译的不对,是没有用的arm-linux-gcc
    你进入到libminigui-1.3.3/src
    把template.o 和template.lo文件删除掉
    下在终端执行先面命令(终端也要进入到libminigui-1.3.3/src目录下)
    arm-linux-gcc -c -fPIC -O2 template.c
    然后再执行 arm-linux-gcc --shared -o template.so *.o
    就好了
    再继续make ,make install
    我记得在libminigui-1.3.3下还有哪个文件里也有template.c文件 重复上面的就好了

     顶部
    yangyang0433 发表于: 2007/04/05 04:12pm

    下面引用由singlewolfyu2006/11/19 02:40pm 发表的内容:
    template.lo
    用 file 命令查看一下这个文件,肯定不是 ARM 指令集的,所以 ld 不认它的格式,
    把这个重新用 arm-linux-gcc 编译一下


    能解释一下重新编译只需要重新编译此文件吗?
    从哪里开始呢?
    谢谢!!!!
     顶部
    yangyang0433 发表于: 2007/04/05 04:18pm

    下面引用由michaelqzq2007/04/05 03:48pm 发表的内容:
    yangyang0433
    template.lo: could not read symbols: File in wrong format
    你的问题出在template.c文件没有编译的不对,是没有用的arm-linux-gcc
    你进入到libminigui-1.3.3/src
    ...


    谢了,已经郁闷我快一周了!!!!
    太感谢了!
     顶部
    yangyang0433 发表于: 2007/04/05 06:13pm
    我有一个问题
    在整个过程中目录结构是怎么回事呢?
    linux系统下
    "/"是最高目录
    它下面有/usr /root 等目录
    我的/opt目录建立在/root目录下
    这样对吗?
    在将minigui移植到板子上的时候
    在/opt目录下创建/rootfs目录
    最后的结果是不是
    /root/opt/rootfs呢?
    谢谢
     顶部
    michaelqzq 发表于: 2007/04/06 11:22am

    下面引用由yangyang04332007/04/05 06:13pm 发表的内容:
    我有一个问题
    在整个过程中目录结构是怎么回事呢?
    linux系统下
    "/"是最高目录
    ...



    目录是/opt/rootfs
    rootfs 就是根目录 在你的rootfs下面就是你文件系统~
    我用的是cramfs文件系统
    目录是这样的
       在rootfs里 有bin dev etc lib mnt proc sbin usr var文件夹
     你的minigui是放在usr下的 和linux操作系统下的目录是一致的
    完整的目录是这样: /opt/rootfs/usr/local/lib/shared/miniguiapps/mginit
    当然在你创建了miniguiapps目录后,将mginit文件夹复制进去就好了,其他的按照斑竹的说明就好了。
    我也是做了2个多星期了才摸索出来。
    不用太急,多看看资料。刚开始做就是有很多地方难理解的。很正常的。
     顶部
    yangyang0433 发表于: 2007/04/06 01:19pm
    斑竹说要拷贝一堆文件和文件夹到/opt/rootfs/usr/local/lib目录下
    我想知道这些文件和文件夹是怎么产生的呢
    我没有那么多文件
    缺了一个libttf.a 和 shared文件夹
    而且minigui文件夹下只有一项里面只有两个图标
    这样对吗?
    谢谢
     顶部
    yangyang0433 发表于: 2007/04/06 01:57pm
    请教大家,斑竹的移植过程中我有个地方不懂
    怎么也做不对了
    希望大家指教
    把minigui移植到你的板子上去
    这部分,开始是创建目录,我不知道应该怎样创建,因为我有两个opt目录
    不知道该在哪个下面创建,一个是和root平级的 另一个是root下级的
    还有就是我没有斑竹所要拷贝的所有文件,该怎么办
    接下来是修改/opt/rootfs/etc/ld.so.conf 可是我的etc目录下没有那个文件啊
    自然也就不能运行下面的命令 ldconfig -r /opt/rootfs
     顶部
    jacky000310 发表于: 2007/04/06 03:51pm
    yangyang0433,我们的遭遇好相似啊,呵呵
    共同摸索,共同进步
     顶部
    michaelqzq 发表于: 2007/04/06 04:08pm

    下面引用由yangyang04332007/04/06 01:19pm 发表的内容:
    斑竹说要拷贝一堆文件和文件夹到/opt/rootfs/usr/local/lib目录下
    我想知道这些文件和文件夹是怎么产生的呢
    我没有那么多文件
    缺了一个libttf.a 和 shared文件夹
    ...



    是这样的构件自己的文件系统,你可以自己构件,也可以下在一个文件系统如cramfs,yaffs文件系统,修改一些培植就可以用了。
    首先你要理解文件系统的概念,网上很多的,你搜一下就可以了。
    你也可以用busybox这个工具来自己构件文件系统。当然要配置正确哦。
    busybox的配置截面类似于linux内核的配置,根据自己的需求来配置。目前我没有用busybox来创建。因为配置了几次都失败了,现在用的是开发版的cramfs文件系统。先把minigui跑起来再说。
     顶部
    yangyang0433 发表于: 2007/04/06 05:04pm
    我想问一下什么样算是在板子上跑起来了呢?
    我现在可以在LCD显示器上显示我的应用程序界面
    但是无法通过板子上的键盘和触摸屏来控制应用程序
    我想是不是我的minigui没有移植上去的原因呢?
    移植minigui主要是移植什么啊
    我看书上说主要是移植IAL和GAL
    是这样的吗?
     顶部
    michaelqzq 发表于: 2007/04/06 06:22pm

    下面引用由yangyang04332007/04/06 05:04pm 发表的内容:
    我想问一下什么样算是在板子上跑起来了呢?
    我现在可以在LCD显示器上显示我的应用程序界面
    但是无法通过板子上的键盘和触摸屏来控制应用程序
    我想是不是我的minigui没有移植上去的原因呢?
    ...


    现在你已经将minigui移植上去了~
    你看到的界面就是minigui的界面,你要用键盘和触摸屏需要添加相应的驱动。
     顶部
    yangyang0433 发表于: 2007/04/06 06:41pm

    下面引用由michaelqzq2007/04/06 06:22pm 发表的内容:
    现在你已经将minigui移植上去了~
    你看到的界面就是minigui的界面,你要用键盘和触摸屏需要添加相应的驱动。


    相应的驱动应该填在内核里吗?
    还是应该写相应的输入引擎?
    我现在就想用键盘控制应用程序
    应该怎么做呢?
    我一点方向都没有了
     顶部
    michaelqzq 发表于: 2007/04/06 07:42pm

    下面引用由yangyang04332007/04/06 06:41pm 发表的内容:
    相应的驱动应该填在内核里吗?
    还是应该写相应的输入引擎?
    我现在就想用键盘控制应用程序
    应该怎么做呢?
    ...


    这方面的我还没有做 ,我的minigui还有些问题。还需要修改一下。接下来我准备去做触摸屏那部分。驱动是加在内核里。
    有兴趣的可以加我的QQ:250531078一起研究。我现在在做毕业设计。
     顶部
    yangyang0433 发表于: 2007/04/06 08:20pm
    我加了,我也做毕业设计呢
    呵呵
    已经弄好久了
     顶部
    yangyang0433 发表于: 2007/04/06 08:22pm
    相关图片如下:
    按此在新窗口浏览图片

    我现在只能显示应用程序界面,剩下什么都做不了了!
     顶部
    亚瑟王 发表于: 2007/04/07 01:41pm
    问一下,我在移植时前面都通过了,做成了文件系统烧写到板子上运行时出现这样的错误,怎么解决啊?
    错误信息如下:./mginit: error while loading shared libraries: cannot open shared object file: cannot load shared object file: No such file or directory

    我全部按照楼主写的那样做的啊.
    麻烦指点一下.

     顶部
    ccanimal 发表于: 2007/04/08 10:59am
    楼上的哥们:
    我重新编译了libjpeg.so等文件,configure libminigui时:checking for jpeg_std_error in -ljpeg... yes,但是make时依然出错,信息如下:
    /usr/local/arm/2.95.3/arm-linux/bin/ld: template.lo: Relocations in generic ELF
    (EM: 3)
    template.lo: could not read symbols: File in wrong format
    collect2: ld returned 1 exit status
    make[3]: *** [libminigui.la] Error 1
    make[3]: Leaving directory `/home/minigui/s3c2440/libminigui-1.3.3/src'
    make[2]: *** [all-recursive] Error 1
    make[2]: Leaving directory `/home/minigui/s3c2440/libminigui-1.3.3/src'
    make[1]: *** [all-recursive] Error 1
    make[1]: Leaving directory `/home/minigui/s3c2440/libminigui-1.3.3'
    make: *** [all] Error 2
    检查template.lo文件,显示i386格式,并非ARM文件,不知道怎么编译temlate.lo为ARM格式文件?
    ===================================================================

    我也遇见了这样的问题,但是我重新做一次libminigui然后再make menuconfig,再make就可以了,^_^

    我现在有一个问题,请教各位大虾。
    在把minigui移植到板子上的时候,“[Root]# mkdir –p /opt/rootfs/usr/local/[lib,etc]”这句话是怎么理解?
    难道是:
    [Root]# mkdir –p /opt/rootfs/usr/local/lib
    [Root]# mkdir –p /opt/rootfs/usr/local/etc
    然后这句:
    “同时修改 /opt/rootfs/etc/ld.so.conf ,在里面最后新加入一行  /usr/local/lib”,,,,,有这个目录吗?我倒是知道有/etc/ld.so.conf这个文件。难道是lz疏忽了?但是这样我也试了,报出这样的错误:
    [root@localhost etc]#ldconfig -r /opt/rootfs/
    ldconfig:Can't open configuration file /etc/ld.so.conf:No such file or directory
    ldconfig:Can't create temporary cache file /etc/ld.so.cache~:No such file or directory
    我看了两天了没有找到解决办法,卡壳了。恳请大虾指教。

     顶部
    jacky000310 发表于: 2007/04/08 06:14pm
    我也遇到了:./mginit: error while loading shared libraries: cannot open shared object file: cannot load shared object file: No such file or directory
    我的目标板中没有ld.so.conf,也不能执行ldconfig
    这种情况哪位高手帮帮忙啊,已经半个月了
     顶部
    亚瑟王 发表于: 2007/04/08 11:04pm
    是啊,这个问题困扰我很久了,就是运行不起来啊。
     顶部
    ccanimal 发表于: 2007/04/09 08:13am
    我现在有一个问题,请教各位大虾。
    在把minigui移植到板子上的时候,“[Root]# mkdir –p /opt/rootfs/usr/local/[lib,etc]”这句话是怎么理解?
    难道是:
    [Root]# mkdir –p /opt/rootfs/usr/local/lib
    [Root]# mkdir –p /opt/rootfs/usr/local/etc
    然后这句:
    “同时修改 /opt/rootfs/etc/ld.so.conf ,在里面最后新加入一行  /usr/local/lib”,,,,,有这个目录吗?我倒是知道有/etc/ld.so.conf这个文件。难道是lz疏忽了?但是这样我也试了,报出这样的错误:
    [root@localhost etc]#ldconfig -r /opt/rootfs/
    ldconfig:Can't open configuration file /etc/ld.so.conf:No such file or directory
    ldconfig:Can't create temporary cache file /etc/ld.so.cache~:No such file or directory
    我看了两天了没有找到解决办法,卡壳了。恳请大虾指教。
    ------------------------------------------------------------

    lz呢?小手呢?赶紧出来给哥们说说吧,好几个人呢。。
    期待ing~

     顶部
    michaelqzq 发表于: 2007/04/09 10:15am

    下面引用由ccanimal2007/04/09 08:13am 发表的内容:
    我现在有一个问题,请教各位大虾。
    在把minigui移植到板子上的时候,“# mkdir –p /opt/rootfs/usr/local/”这句话是怎么理解?
    难道是:
    # mkdir –p /opt/rootfs/usr/local/lib# mkdir –p /opt/rootfs/usr/ ...



    看看你的出错提示就知道了呀 ld.so.conf 文件是在/etc目录下   你可能没有添加错了,或者没有添加
     顶部
    ccanimal 发表于: 2007/04/09 10:43am

    下面引用由michaelqzq2007/04/09 10:15am 发表的内容:
    看看你的出错提示就知道了呀 ld.so.conf 文件是在/etc目录下   你可能没有添加错了,或者没有添加




    ----------------------------------

    “你可能没有添加错了,或者没有添加”??啥意思?
    直接点儿,我的问题是:/opt/rootfs/etc/ld.so.conf 这个目录是什么时候添加上去的?
     顶部
    小手冰凉 发表于: 2007/04/09 03:06pm

    下面引用由ccanimal2007/04/09 08:13am 发表的内容:
    我现在有一个问题,请教各位大虾。
    在把minigui移植到板子上的时候,“# mkdir –p /opt/rootfs/usr/local/”这句话是怎么理解?
    难道是:
    # mkdir –p /opt/rootfs/usr/local/lib# mkdir –p /opt/rootfs/usr/ ...


    我的理解是这样的
    在/opt/rootfs/usr/local下建立两个目录 lib和etc
    还要在/opt/rootfs建立etc目录
    把/usr/local/etc下的ld.so.conf文件拷到/opt/rootfs/etc/和/opt/rootfs/usr/local/etc下
    然后再ldconfig

    因到现在还没拿到板子,这里的步骤并没有亲手做过,仅供参考
     顶部
    ccanimal 发表于: 2007/04/09 04:39pm

    下面引用由小手冰凉2007/04/09 03:06pm 发表的内容:
    我的理解是这样的
    在/opt/rootfs/usr/local下建立两个目录 lib和etc
    还要在/opt/rootfs建立etc目录
    把/usr/local/etc下的ld.so.conf文件拷到/opt/rootfs/etc/和/opt/rootfs/usr/local/etc下
    ...



    to:小手,谢谢了。
    不过我是将/etc/ld.so.conf拷到了相应的目录下,反正现在执行ld.so.conf是没有问题的,也不知道这样对不对。
    不过按照lz的想法是想把rootfs当成根目录,这么看倒也是挺有道理的。
    等待你尽快把程序跑在板子上验证啊,呵呵呵。3Q!
     顶部
    星核 发表于: 2007/04/10 09:12pm
    yangyang 我也在做毕业设计~遇到的问题也更你差不多~
    还有谁在也做毕业设计的~?你们有QQ吗?我们一起探讨探讨~?
     顶部
    星核 发表于: 2007/04/10 11:02pm
    make menuconfig 结束后
    一开始make也出现yangyang 说的问题~不过后来根据底下的方法改了`却出现这样的问题
    /usr/local/arm/2.95.3/arm-linux/bin/ld: newgal/.libs/libnewgal.al(yuv_mmx.lo): Relocations in generic ELF (EM: 3)
    newgal/.libs/libnewgal.al(yuv_mmx.lo): could not read symbols: File in wrong format
    collect2: ld returned 1 exit status
    make[3]: *** [libminigui.la] Error 1
    make[3]: Leaving directory `/opt/sbc2410/libminigui-1.3.3/src'
    make[2]: *** [all-recursive] Error 1
    make[2]: Leaving directory `/opt/sbc2410/libminigui-1.3.3/src'
    make[1]: *** [all-recursive] Error 1
    make[1]: Leaving directory `/opt/sbc2410/libminigui-1.3.3'
    make: *** [all] Error 2


    那位高手解决一下我的问题啊`万分感谢~

     顶部
    丈夫 发表于: 2007/04/11 02:38pm
    楼上的,重新解压一次也不行?

    PS::./mginit: error while loading shared libraries: cannot open shared object file: cannot load shared object file: No such file or directory

    怎么解决

     顶部
    guanshujun 发表于: 2007/04/11 03:38pm
    楼主,为什么我的png库总是支持不了啊,一开始就出错
    checking for png_check_sig in -lpng... no
     顶部
    小手冰凉 发表于: 2007/04/12 04:07pm

    下面引用由guanshujun2007/04/11 03:38pm 发表的内容:
    楼主,为什么我的png库总是支持不了啊,一开始就出错
    checking for png_check_sig in -lpng... no


    请完全安装linux
     顶部
    星核 发表于: 2007/04/12 07:46pm
    我重新弄了一次还是这个问题~搞不明白有谁能解释一下~
    /usr/local/arm/2.95.3/arm-linux/bin/ld: newgal/.libs/libnewgal.al(yuv_mmx.lo): Relocations in generic ELF (EM: 3)
    newgal/.libs/libnewgal.al(yuv_mmx.lo): could not read symbols: File in wrong format
    collect2: ld returned 1 exit status
    make[1]: *** [libminigui.la] Error 1
    make[1]: Leaving directory `/opt/sbc2410x/libminigui-1.3.3/src'
    make: *** [all-recursive] Error 1
     顶部
    星核 发表于: 2007/04/12 07:47pm

    下面引用由丈夫2007/04/11 02:38pm 发表的内容:
    楼上的,重新解压一次也不行?
    PS error while loading shared libraries: cannot open shared object file: cannot load shared object file: No such file or directory
    怎么解决



    好象不行~

    /usr/local/arm/2.95.3/arm-linux/bin/ld: newgal/.libs/libnewgal.al(yuv_mmx.lo): Relocations in generic ELF (EM: 3)
    newgal/.libs/libnewgal.al(yuv_mmx.lo): could not read symbols: File in wrong format

    我的是这个问题~我都重装过RH9一次~然后再重新做了一次~问题还是一样~

    NEWGAL不要又不行~~
     顶部
    星核 发表于: 2007/04/12 09:04pm
    刚又试了一下~覆盖一次libminigui就正常了~谢谢 丈夫 的帮忙~
    不过现在又有一个小问题复制libttf.so的时候不存在~
    可是checking的时候却是yes~
     顶部
    丈夫 发表于: 2007/04/12 09:24pm
    忽然发现我的ID很BT阿,哈哈
    本来是打zhangf,结果把回车按成了空格,就这么注册了
     顶部
    yangyang0433 发表于: 2007/04/13 08:00pm
    呵呵!!大家都在做毕设啊!!!
    我QQ125781809
    我现在也是跟着一位大侠再做!!
    全靠他了!!呵呵
    随便问下,现在有谁写好了输入引擎吗?
    我理解minigui的运行机制是
    上层应用程序调用输入引擎,由输入引擎来完成输入信息到
    上层应用可以识别的消息的转换
    不知道这样对不对,高手指教!!
    小生在此谢过!!
     顶部
    jacky000310 发表于: 2007/04/16 01:38pm
    还是没有解决那个问题的牛人出现吗T_T
     顶部
    michaelqzq 发表于: 2007/04/16 01:55pm

    下面引用由jacky0003102007/04/16 01:38pm 发表的内容:
    还是没有解决那个问题的牛人出现吗T_T


     你说的哪个问题呀呀
     顶部
    wei902 发表于: 2007/04/16 06:21pm
    为什么编译freetype libttf要出错呢?大侠帮忙

    按照楼主的办法,编译的最后一步出现找不到memset 等问题,如下:

    [root@localhost libttf]# arm-elf-gcc -shared -o libttf.so *.o
    /usr/local/arm-elf/lib/crt0.o(.text+0x10): In function `_start':
    : undefined reference to `__uClibc_main'
    /usr/local/arm-elf/lib/crt0.o(.text+0x14): In function `_start':
    : undefined reference to `abort'
    freetype.o(.text+0xdf0): In function `TT_Copy_Outline':
    : undefined reference to `memcpy'
    freetype.o(.text+0xe00): In function `TT_Copy_Outline':
    : undefined reference to `memcpy'
    freetype.o(.text+0xe14): In function `TT_Copy_Outline':
    : undefined reference to `memcpy'
    freetype.o(.text+0x2a08): In function `Load_Simple_Glyph':
    : undefined reference to `memcpy'
    freetype.o(.text+0x2ae8): In function `Load_Simple_Glyph':
    : undefined reference to `memcpy'
    freetype.o(.text+0x2b68): more undefined references to `memcpy' follow
    freetype.o(.text+0x4c24): In function `Ins_MINDEX':
    : undefined reference to `memmove'
    freetype.o(.text+0xa174): In function `Context_Load':
    : undefined reference to `memcpy'
    freetype.o(.text+0xa1bc): In function `Context_Load':
    : undefined reference to `memcpy'
    freetype.o(.text+0xa5e4): In function `Instance_Init':
    : undefined reference to `memcpy'
    freetype.o(.text+0xa8ac): In function `Instance_Reset':
    : undefined reference to `memcpy'
    freetype.o(.text+0xa960): In function `Instance_Reset':
    : undefined reference to `memcpy'
    freetype.o(.text+0xc3a0): In function `Vertical_Sweep_Span':
    : undefined reference to `memset'
    freetype.o(.text+0xdae4): In function `Stream_Activate':
    : undefined reference to `fopen'
    freetype.o(.text+0xdb14): In function `Stream_Activate':
    : undefined reference to `fseek'
    freetype.o(.text+0xdb1c): In function `Stream_Activate':
    : undefined reference to `ftell'
    freetype.o(.text+0xdb30): In function `Stream_Activate':
    : undefined reference to `fseek'
    freetype.o(.text+0xdb48): In function `Stream_Activate':
    : undefined reference to `fseek'
    freetype.o(.text+0xdb58): In function `Stream_Activate':
    : undefined reference to `fclose'
    freetype.o(.text+0xdb98): In function `Stream_Deactivate':
    : undefined reference to `ftell'
    freetype.o(.text+0xdba4): In function `Stream_Deactivate':
    : undefined reference to `fclose'
    freetype.o(.text+0xdc2c): In function `TT_Open_Stream':
    : undefined reference to `strlen'
    freetype.o(.text+0xdc5c): In function `TT_Open_Stream':
    : undefined reference to `strncpy'
    freetype.o(.text+0xdd50): In function `TT_Seek_File':
    : undefined reference to `fseek'
    freetype.o(.text+0xdd94): In function `TT_Skip_File':
    : undefined reference to `ftell'
    freetype.o(.text+0xdde8): In function `TT_Read_File':
    : undefined reference to `fread'
    freetype.o(.text+0xde64): In function `TT_File_Pos':
    : undefined reference to `ftell'
    freetype.o(.text+0xdf80): In function `TT_Alloc':
    : undefined reference to `malloc'
    freetype.o(.text+0xdfc8): In function `TT_Alloc':
    : undefined reference to `memset'
    freetype.o(.text+0xe038): In function `TT_Realloc':
    : undefined reference to `realloc'
    freetype.o(.text+0xe084): In function `TT_Free':
    : undefined reference to `free'
    ftxgdef.o(.text+0x360): In function `TT_Load_GDEF_Table':
    : undefined reference to `memcpy'
    ftxgsub.o(.text+0xdc): In function `TT_GSUB_Add_String':
    : undefined reference to `memcpy'
    ftxgsub.o(.text+0x6248): In function `TT_GSUB_Apply_String':
    : undefined reference to `memcpy'
    ftxgsub.o(.text+0x627c): In function `TT_GSUB_Apply_String':
    : undefined reference to `memcpy'
    ftxgsub.o(.text+0x6364): In function `TT_GSUB_Apply_String':
    : undefined reference to `free'
    ftxgsub.o(.text+0x6374): In function `TT_GSUB_Apply_String':
    : undefined reference to `free'
    ftxgsub.o(.text+0x637c): In function `TT_GSUB_Apply_String':
    : undefined reference to `free'
    ftxsbit.o(.text+0x220): In function `Crop_Bitmap':
    : undefined reference to `memmove'
    ftxsbit.o(.text+0xe7c): In function `Load_SBit_Image':
    : undefined reference to `memset'
    ftxsbit.o(.text+0x12dc): In function `TT_Get_SBit_Strike':
    : undefined reference to `memset'
    collect2: ld returned 1 exit status

    好像是找不到libc.a
    所以我试图强制链接库libc.a, 使用如下办法:

    [root@localhost libttf]# arm-elf-gcc -shared -o libttf.so *.o -l /usr/local/arm-elf/lib/libc.a
    /usr/local/arm-elf/bin/ld.real: cannot find -l/usr/local/arm-elf/lib/libc.a
    collect2: ld returned 1 exit status

    又说找不到libc.a,但是经过确认这个库文件是存在的

    [root@localhost libttf]# ls /usr/local/arm-elf/lib/
    crt0.o      ldscripts     libcrypt.a  libiberty.a   libresolv.a  mapcs-26
    elf2flt.ld  libc.a        libc.txt    libm.a        libstdc++.a  mbig-endian
    fpic        libc.a-orgin  libg.a      libpthread.a  libutil.a
    msingle-pic-base


    请教各位,这到底是什么问题亚(大家帮助下新手上路哈)

     顶部
    jacky000310 发表于: 2007/04/16 08:49pm
    错误信息如下:./mginit: error while loading shared libraries: cannot open shared object file: cannot load shared object file: No such file or directory
     顶部
    michaelqzq 发表于: 2007/04/16 10:23pm

    下面引用由jacky0003102007/04/16 08:49pm 发表的内容:
    错误信息如下 error while loading shared libraries: cannot open shared object file: cannot load shared object file: No such file or directory


     
    去看看  亚瑟王 的 贴你就知道了。
    他现在准备出一个合集。
     顶部
    abel6915 发表于: 2007/04/17 08:24pm
    用的版本不是1.3.3而是1.6.2的版本,
    在libminigui下 ,怎么不能用 make menuconfig 呢?
    请问怎么办呢?请大家帮助我,谢谢
     顶部
    jacky000310 发表于: 2007/04/17 08:48pm
    如果不能用,那就只好./configure --enable-这样配置了
     顶部
    abel6915 发表于: 2007/04/17 09:52pm
    [这个贴子最后由abel6915在 2007/04/17 09:59pm 第 1 次编辑]

    1.6.2学习版本 libminigui下不能用make menuconfig,

    如果用./config --enable,能像 make menuconfig 那样进行选项配置吗?如果不能,会有影响吗? 谢谢

     顶部
    jacky000310 发表于: 2007/04/17 10:36pm
    似乎可以用--enable-xxx和--disable-xxx来配置吧,我没用过1.6.2的,意见仅供参考
     顶部
    yangyang0433 发表于: 2007/04/18 00:20am
    有在移植好的minigui上添加自己的应用程序的吗?
    我添加了一个进去
    可是仅显示了应用程序的四分之一
    怎么回事呢?
     顶部
    www83207 发表于: 2007/04/19 10:19am
    請問各位前輩,我交叉編譯了一個範例,使用NFS丟入板子中RUN,但是卻出現以下的錯誤訊息,希望各位前輩能幫我看看。
    /mnt/nfs$ ./listbox
    ./listbox: relocation error: /usr/local/lib/libminigui-1.3.so.3: undefined symbo
    l: sem_init
     顶部
    guanshujun 发表于: 2007/04/19 09:02pm
    请问大家文件系统到底要怎么建啊,搂主的说明我有很多都看不懂
     顶部
    abel6915 发表于: 2007/04/20 09:35pm
    在编译 mde-1.3.0时,
    先用./configure --prefix=/opt/rootfs/usr/local --host=arm-linux,后

    在make 时,报错:

    /usr/local/arm/2.95.3/arm-linux/lib/libvcongui.so:could not read symbols

    请问怎么办呢?

     顶部
    zhuyunxiong 发表于: 2007/04/21 09:44am
    有没有做过FLASH播放器移植的啊,我下了一个flashplayer-0.2,在PC机上跑起来没问题,可是交叉编译不过呀,MINIGUI已经成功移植了
     顶部
    zhuyunxiong 发表于: 2007/04/21 09:45am
    有没有做过FLASH播放器移植的啊,我下了一个flashplayer-0.2,在PC机上跑起来没问题,可是交叉编译不过呀,MINIGUI已经成功移植了
    有谁做过的话请加我QQ:282873175
    请教一下,谢了

    另外,感谢楼主写得这么详细,要自己摸索,不知道要到什么时候了,真心说一声谢谢

     顶部
    guanshujun 发表于: 2007/04/21 10:07am
    楼上的,我想问一下,你是怎么移植成功的,楼主写的文件系统的建立我不太懂,你能不能指点一下
     顶部
    zhuyunxiong 发表于: 2007/04/21 10:47am
    你现在是做到哪里了??
     顶部
    guanshujun 发表于: 2007/04/21 11:15am
    做到修改linuxrc这步,可我没有 /usr/local/lib/shared/miniguiapps/mginit这个目录啊,而且即使我进到自己创建的miniguiapps/mginit目录下也不能执行mginit,说是不能执行二进制文件
     顶部
    guanshujun 发表于: 2007/04/21 11:17am
    我用的是开发板中自己带的根文件系统,可不知道里面应该怎么修改
     顶部
    星核 发表于: 2007/04/23 07:18pm
    楼上的~我也是不太明白文件系统这步到底是什么回事~
    正愁着呢~希望有大侠出来点播点播~

    LZ的文章有的没说明白啊~

     顶部
    www83207 发表于: 2007/04/24 03:23pm
    前面已經移植成功的前輩們,不知道能否請前輩們抽個空,解答大家的問題呢....orz....感恩丫
     顶部
    星核 发表于: 2007/04/25 08:00am

    下面引用由丈夫2007/04/12 09:24pm 发表的内容:
    忽然发现我的ID很BT阿,哈哈
    本来是打zhangf,结果把回车按成了空格,就这么注册了



    我那时候打这个ID也是觉得怪怪的~呵呵~
     顶部
    星核 发表于: 2007/04/25 08:20am
    在第四页里BANCE的补丁贴这里我没有看明白~不知道里面是不是有些细节写错了?希望大家能给点指点~
    原文如下

    在进行[Root] ldconfig –r /opt/rootfs的时候要保证你是root用户,要不会提示找不到ldconfig命令(该命令位于/sbin目录下),在运行的时候报出类似:ldconfig: /lib/libttf.so.2 is not a symbolic link的错误,有好多条.
    像上边一样,依葫芦画瓢如果libttf.so.2文件是实体文件,就用rm /lib/libttf.so.2删去,然后用ln -s /usr/lib/libttf.so libttf.so在同样的位置给它用我们生成的文件建一个符号链.(有两个错误指向的文件没见过,放它一马)

    我出现的问题是

    [root@localhost root]# ldconfig -r /opt/rootfs/
    ldconfig: /usr/local/lib/libz.so.1 is not a symbolic link
    ldconfig: /usr/local/lib/libvcongui-1.3.so.3 is not a symbolic link
    ldconfig: /usr/local/lib/libpopt.so.0 is not a symbolic link
    ldconfig: /usr/local/lib/libpng.so.2 is not a symbolic link
    ldconfig: /usr/local/lib/libminigui-1.3.so.3 is not a symbolic link
    ldconfig: /usr/local/lib/libmgext-1.3.so.3 is not a symbolic link
    ldconfig: /usr/local/lib/libjpeg.so.62 is not a symbolic link

    我应该怎么做?可以给我一个正确的举例吗?

     顶部
    chrisin 发表于: 2007/04/26 04:09pm

    下面引用由lqgcd2006/11/15 10:57pm 发表的内容:
    是你的libtool路径不对,用ln把你的交叉编译器下的libtool链接到当前目录就可以了;




    为什么我的交叉编译器目录下没有libtool这个文件呢?用find找完了所有的目录只有/usr/bin和/usr/shared ,/opt/2410/libmini-1.3.3/,/opt/2410/qvfb/ ,这几个目录下有libtool这个文件
     顶部
    kaqiu2007 发表于: 2007/04/26 05:33pm
    安装jpeg库时出现如下错误:
    [root@localhost jpeg-6b]# make
    ./libtool --mode=compile gcc -O2  -I. -c ./jcapimin.c
    make: ./libtool: Command not found
    make: *** [jcapimin.lo] Error 127

    敬请高手解答下,应该怎么解决,感激不尽!!!

     顶部
    星核 发表于: 2007/04/27 07:55am

    下面引用由kaqiu20072007/04/26 05:33pm 发表的内容:
    安装jpeg库时出现如下错误:
    # make
    ./libtool --mode=compile gcc -O2  -I. -c ./jcapimin.c
    make Command not found
    ...



    删除并重新解压JPEG包~重新根据步骤作一次~
    ./configure XXX --host=arm-linux XXX
    ./configure XXX  --CC=arm-linux-gcc XXX
    这两步都要执行一遍~第一个好像无法正常~不清楚为什么~第二个也试一下~
     顶部
    kaqiu2007 发表于: 2007/04/27 10:16am

    下面引用由星核2007/04/27 07:55am 发表的内容:
    删除并重新解压JPEG包~重新根据步骤作一次~
    ./configure XXX --host=arm-linux XXX
    ./configure XXX  --CC=arm-linux-gcc XXX
    这两步都要执行一遍~第一个好像无法正常~不清楚为什么~第二个也试一下~


    按照您的步骤试过,还是不行,还是出现
    [root@localhost jpeg-6b]# make
    ./libtool --mode=compile arm-linux-gcc -O2  -I. -c ./jcapimin.c
    make: ./libtool: Command not found
    make: *** [jcapimin.lo] Error 127
    之前的步骤都已经正确配置,到这一步就卡住了!
     顶部
    guanshujun 发表于: 2007/04/27 04:52pm
    为什么我在mkcramfs时总是提示warning: gids truncated to 8 bits,而且不管我的根文件系统多大,mkcramfs之后只有10.9M,有没有谁遇到过啊
     顶部
    jacky000310 发表于: 2007/04/27 10:42pm
    手工从系统里面拷贝一份覆盖 libtool

    cd jpeg-6b
    cp /usr/share/libtool/config.* .
    然后再configure

     顶部
    星核 发表于: 2007/04/28 12:53pm
    我移到板上后
    出现这个问题~是怎么一回事呢?

    GAL ENGINE: Can't open /dev/tty0: No such file or directory
    NEWGAL: Set video mode failure.
    Error in step 3: Can not initialize graphics engine!
    InitGUI fa

     顶部
    星核 发表于: 2007/04/28 07:12pm
    不容易~我终于也算移植成功了~显示出界面了~
     顶部
    guanshujun 发表于: 2007/04/28 09:01pm
    楼上的,在你移植到arm上时有没有遇到找不到fbcon的问题
     顶部
    abel6915 发表于: 2007/04/29 10:28am
    [这个贴子最后由abel6915在 2007/04/29 10:40am 第 1 次编辑]

    当在目标板上显示./mginit的页面后,

    如何把交叉编译好的 helloworld 加入 mginit.rc文件中,需要怎么填写,比如path,

    name,layer,tip,icon 写什么? 谢谢了

    谢谢指点

     顶部
    星核 发表于: 2007/04/29 10:40am

    下面引用由guanshujun2007/04/28 09:01pm 发表的内容:
    楼上的,在你移植到arm上时有没有遇到找不到fbcon的问题



    framebuffer是不是没开???
     顶部
    dhbchina 发表于: 2007/04/29 05:24pm
    楼主说的文件系统要怎么配置?
    具体要放那些文件,放在哪些位置?   请高人指点
    卡死在这了
    还有,我开发板用的FFT9200的,上面的minigui用的是1.6.2的版本,这里有谁在用这个版本吗,可以讨论下,我qq :20989788
     顶部
    guanshujun 发表于: 2007/04/29 07:23pm

    下面引用由星核2007/04/29 10:40am 发表的内容:
    framebuffer是不是没开???


    我的开了,就是不知道为什么会出现那种问题
     顶部
    星核 发表于: 2007/04/30 04:53pm

    下面引用由guanshujun2007/04/29 07:23pm 发表的内容:
    我的开了,就是不知道为什么会出现那种问题



    fbcon找不到的方法:
    先看看你的/dev/fb/0
    ln -s /dev/fb/0 /dev/fb0

    tty0找不到的方法:
    ln -s /dev/vc/0 /dev/tty0
     顶部
    guanshujun 发表于: 2007/04/30 08:17pm
    谢了,就按你的方法成功了
     顶部
    queniao 发表于: 2007/05/04 08:44am
    不能只有CC,AR,RANLIB,LD等几个在,armv4l/armv4l-unknown-linux/目录下,也要加进去
     顶部
    minimini 发表于: 2007/05/08 03:55pm
    /usr/local/arm/2.95.3/arm-linux/bin/ld: newgal/.libs/libnewgal.al(yuv_mmx.lo): Relocations in generic ELF (EM: 3)
    newgal/.libs/libnewgal.al(yuv_mmx.lo): could not read symbols: File in wrong format
    collect2: ld returned 1 exit status
    make[3]: *** [libminigui.la] Error 1
    make[3]: Leaving directory `/opt/2410/libminigui-1.3.3/src'
    make[2]: *** [all-recursive] Error 1
    make[2]: Leaving directory `/opt/2410/libminigui-1.3.3/src'
    make[1]: *** [all-recursive] Error 1
    make[1]: Leaving directory `/opt/2410/libminigui-1.3.3'
    make: *** [all] Error 2

    请楼主和各位高人帮忙!

     顶部
    abel6915 发表于: 2007/05/08 05:26pm
    大家在成功移植1.3.3后,有没有在目标板上加上usb鼠标,请问能加上吗?
    在MiniGUI.cfg中的ial_engine= 和 mdev= 是怎么设的?

    ps:我设为ial_engine=console,mdev=dev/mice,不行,报错:
    IAL NATIVE Engine:can not init pointing device
    IAL:Init ial engine failure
    error in step 9:can not initialize low level event......

     顶部
    minimini 发表于: 2007/05/09 04:20pm

    [root@localhost mde-1.3.0]# make
    Making all in notebook
    make[1]: Entering directory `/opt/rootfs/mde-1.3.0/notebook'
    Making all in res
    make[2]: Entering directory `/opt/rootfs/mde-1.3.0/notebook/res'
    make[2]: Nothing to be done for `all'.
    make[2]: Leaving directory `/opt/rootfs/mde-1.3.0/notebook/res'
    make[2]: Entering directory `/opt/rootfs/mde-1.3.0/notebook'
    arm-linux-gcc  -g -O2 -Wall -Wstrict-prototypes -pipe   -o notebook  main.o -lmgext -lminigui
    /usr/local/arm/2.95.3/arm-linux/lib/libminigui.so: undefined reference to `TT_CharMap_First'
    /usr/local/arm/2.95.3/arm-linux/lib/libminigui.so: undefined reference to `TT_Init_Kerning_Extension'
    /usr/local/arm/2.95.3/arm-linux/lib/libminigui.so: undefined reference to `TT_CharMap_Last'
    /usr/local/arm/2.95.3/arm-linux/lib/libminigui.so: undefined reference to `TT_Load_Kerning_Table'
    /usr/local/arm/2.95.3/arm-linux/lib/libminigui.so: undefined reference to `TT_Get_Kerning_Directory'
    collect2: ld returned 1 exit status
    make[2]: *** [notebook] Error 1
    make[2]: Leaving directory `/opt/rootfs/mde-1.3.0/notebook'
    make[1]: *** [all-recursive] Error 1
    make[1]: Leaving directory `/opt/rootfs/mde-1.3.0/notebook'
    make: *** [all-recursive] Error 1
    请各位高人帮忙
     顶部
    abel6915 发表于: 2007/05/10 10:27am
    首先确认编译minigui时make menuconfig时的选项是否设置正确?如果不是,重新编译生成
     顶部
    sleepless 发表于: 2007/05/14 02:40pm

    下面引用由bance2007/03/13 00:04am 发表的内容:
    /*   引自原文 */
    [Root]# mkdir –p /opt/rootfs/usr/local/[lib,etc]
    把 /usr/local/arm/2.95.3/arm-linux/lib 中相应的库拷到 /opt/rootfs/usr/local/lib 目录下去
    /*  结束  */
    改放到 /opt/rootfs/usr/lib下,同时清空 /opt/rootfs/usr/local/lib目录 (*注意*这一点很要命,如果同时存在则在运行时会报段错误,至今没弄明白.)


    说找不到/usr/lib/下库的问题我也遇到了,如果按照以上方法,的确可以解决。但是看了MiniGUI.cfg配置文件,发现默认的路径都是/usr/local/lib。所以这个文件也要相应改动。有谁知道这是什么原因造成的啊?好像照此看来etc/ld.so.conf文件更本没有作用。以前做的文件系统根本没有用到ld.so.conf这个配置文件。求解答。
     顶部
    treeglai 发表于: 2007/05/14 09:22pm
    我在make menuconfig 的时候,总是看到这个信息!
    checking for jpeg_std_error in -ljpeg... no

    就是不支持jpg 。但是我在make menuconfig 的时候已经选择了 jpg support 了啊!
    jpeg库也已经安装了。

    这是怎么回事呢?有兄弟碰到过吗?

     顶部
    dhbchina 发表于: 2007/05/16 10:41pm

    下面引用由minimini2007/05/09 04:20pm 发表的内容:
    # make
    Making all in notebook
    make: Entering directory `/opt/rootfs/mde-1.3.0/notebook'
    Making all in res
    ...


    跟这位仁兄同样的问题
    卡了我很久了  
     顶部
    firemcu 发表于: 2007/05/19 10:17pm

     我的开发板flash分区给ramdisk的大小只是5M,若按楼主的方法添加库的话,空间不够,请问怎么解决?
     顶部
    ashizl 发表于: 2007/05/21 08:12pm
    楼主、各位高手:
       我完全按照楼主的指示执行,前面一切顺利,但是我在编译libminigui的时候,make menuconfig选项也是按照楼主的说明做的,check也对,但是make的时候 出现以下问题:
    stretch.c:265:47: missing terminating " character
    stretch.c:267:25: missing terminating " character
    make[4]: *** [stretch.lo] 错误 1
    make[4]: Leaving directory `/root/minigui1.3/libminigui-1.3.3/src/newgal'
    make[3]: *** [all-recursive] 错误 1
    make[3]: Leaving directory `/root/minigui1.3/libminigui-1.3.3/src/newgal'
    make[2]: *** [all-recursive] 错误 1
    make[2]: Leaving directory `/root/minigui1.3/libminigui-1.3.3/src'
    make[1]: *** [all-recursive] 错误 1
    make[1]: Leaving directory `/root/minigui1.3/libminigui-1.3.3'
    make: *** [all] 错误 2

    但是以前我按照pc编译是正确的,或者选择oldgal时也是正确的,为什么选择newgal就出错??着急中……望各位指教。谢谢。

     顶部
    ashizl 发表于: 2007/05/23 06:30pm
    我从系统了复制了一个libtool过去.但是make的时候又提示ld出错.为什么都是一样的red9系统,差距就这么大??
     顶部
    guoweijun 发表于: 2007/05/23 08:12pm
    最后安装 libttf 库,这个是 TrueType 字体的支持库,用来显示文字的。

    注意:MiniGUI 的文档说只支持 1.3.1 版本的 ttf 库,不要把版本弄错了 :)

    这个库装起来最麻烦,全部自己手动编译,安装,下面一步一步来做吧:)

    [user]# tar zxf  freetype-1.3.1.tar.gz       //老一套
    [user]# cd freetype-1.3.1   //进到目录里去
    [user]# mkdir –p /opt/st2410/libttf/extend   // 自己另外建立一个目录
    cp freetype-1.3.1/lib/*  freetype-1.3.1/lib/arch/ansi/*  libttf/

    [root@localhost freetype-1.3.1]# cp freetype-1.3.1/lib/*  freetype-1.3.1/lib/arch/ansi/*  libttf/
    cp: 复制多个文件,但最后的参数‘libttf/’并非目录。
    请尝试执行‘cp --help’来获取更多信息。

    为什么?

     顶部
    minimini 发表于: 2007/05/28 11:00am
    把 /usr/local/arm/2.95.3/arm-linux/lib 中相应的库拷到 /opt/rootfs/usr/local/lib 目录下去
    下面是我拷的库文件:

    libjpeg.a          libmgext-1.3.so.3        libminigui.a   libpng.so.2            libttf.a                 libz.so
    libjpeg.la         libmgext-1.3.so.3.0.0    libminigui.la  libpng.so.2.1.0.10rc1  libttf.so              libz.so.1
    libjpeg.so        libmgext.a               libminigui.so  libpopt.a              libvcongui-1.3.so.3      libz.so.1.2.3
    libjpeg.so.62      libmgext.la              libm.so        libpopt.la             libvcongui-1.3.so.3.0.0  minigui
    libjpeg.so.62.0.0  libmgext.so              libm.so.6      libpopt.so             libvcongui.a             shared
    libm-2.2.3.so      libminigui-1.3.so.3      libpng.a       libpopt.so.0           libvcongui.la
    libm.a             libminigui-1.3.so.3.0.0  libpng.so      libpopt.so.0.0.0       libvcongui.so

    其中一些 .a 的静态库是不需要拷过去的,我图方便,一起拷了,呵,懒人的做法

    为什么我这没有shared文件夹?缺了它是不是影响不大?

     顶部
    minimini 发表于: 2007/05/28 11:04am
    在单独编译一个应用程序时,出现如下错误:
    collect2:ld returnned 1 exit status.
    是不是说找不到库,还是怎么样?
    应用如何解决,希望各位高手指点一二,谢谢。
     顶部
    ashizl 发表于: 2007/05/29 10:30pm
    呵呵,不知道你解决没有?
    我一开始也是遇到这个问题,又仔细看了看楼主说的,要事先准备好一个可以用的根文件系统的。
     顶部
    ashizl 发表于: 2007/05/29 10:32pm
    需要把minigui的lib重新编译,而不是在原先编译的基础上再进行编译。因为我们原来用gcc编译的文件。arm-liunux-gcc是认不了的。
     顶部
    kanchi 发表于: 2007/06/04 07:14pm
    感谢lz的无私奉献

    这几天照着lz的纲领尝试了一下,期间还是遇到了不少错误,仔细看了大家的回帖,也找到了不少解决方法,不过还是在交叉编译环境设置好了,开始移植的时候出现了一些问题

    1.把 /usr/local/arm/2.95.3/arm-linux/lib 中相应的库拷到
     /opt/rootfs/usr/local/lib 目录下去时,缺少libttf.a和shared文件夹,不知是否有影响。里面的minigui文件夹是只有2个文件吗?

    2.[Root]# cp –r –a /usr/local/lib/minigui /opt/rootfs/usr/local/ 连目录一起拷过来,目录结构和主机一样
    如果目录结构和主机一样的话,是否该是
    [Root]# cp –r –a /usr/local/lib/minigui /opt/rootfs/usr/local/lib呢?
    当然这只是我的个人感觉,呵呵

    3.在设置完mde-1.3.0后,编译的时候,出现了如下错误
    Making all in notebook
    make[1]: Entering directory `/opt/s2410/mde-1.3.0/notebook'
    Making all in res
    make[2]: Entering directory `/opt/s2410/mde-1.3.0/notebook/res'
    make[2]: Nothing to be done for `all'.
    make[2]: Leaving directory `/opt/s2410/mde-1.3.0/notebook/res'
    make[2]: Entering directory `/opt/s2410/mde-1.3.0/notebook'
    arm-linux-gcc  -g -O2 -Wall -Wstrict-prototypes -pipe   -o notebook  main.o -lmgext -lminigui
    /usr/local/arm/2.95.3/arm-linux/lib/libminigui.so: undefined reference to `TT_CharMap_First'
    /usr/local/arm/2.95.3/arm-linux/lib/libminigui.so: undefined reference to `TT_Init_Kerning_Extension'
    /usr/local/arm/2.95.3/arm-linux/lib/libminigui.so: undefined reference to `TT_CharMap_Last'
    /usr/local/arm/2.95.3/arm-linux/lib/libminigui.so: undefined reference to `TT_Load_Kerning_Table'
    /usr/local/arm/2.95.3/arm-linux/lib/libminigui.so: undefined reference to `TT_Get_Kerning_Directory'
    collect2: ld returned 1 exit status
    make[2]: *** [notebook] Error 1
    make[2]: Leaving directory `/opt/s2410/mde-1.3.0/notebook'
    make[1]: *** [all-recursive] Error 1
    make[1]: Leaving directory `/opt/s2410/mde-1.3.0/notebook'
    make: *** [all-recursive] Error 1
    接下来也无法安装了。。5555

    ps:我的libminigui是配置为Lite模式的

    希望lz或者其他成功移植的兄弟能帮忙解答,小弟不胜感激
    也希望所有像我一样遇到困难的兄弟都能rp爆发,移植成功!!

     顶部
    gavinyan 发表于: 2007/06/05 11:31am
    感谢楼主,折腾了一个多星期没弄好,看了你的帖子,很快就 把PC 环境搭建好了,楼主辛苦了!!!
     顶部
    ashizl 发表于: 2007/06/07 04:38pm

    对于第2个问题,我自己是吧minigui需要的资源文件爱按照Minigui,cfg中路径放到开发般的根文件路径中去的.库文件我是把minigui安装完后生成的lib库下的18项一起复制到开发板的/usr/lib中去的.
    第3个问题建议 你删除原来在pc环境下编译的lib和mde,从新按照楼主后面讲的交叉编译一下.

     顶部
    kanchi 发表于: 2007/06/09 02:27pm
    本人菜鸟,有一个简单的问题想要请教大家


    下面引用由singlewolfyu2006/11/08 11:07am 发表的内容:
    OK ,下面是把 minigui 移植到你的板子上去了。

    我在 /opt 目录下建立了一个 rootfs 目录,即 /opt/rootfs  ,用来建立我的嵌入式系统的根目录,现在我需要把 minigui 的库文件放到里面去,



    lz所谓的建立了一个rootfs目录,其实是一个可以用来烧到板子上去的linux内核,而并不是一个空的目录?因此目录里面有后面需要修改/etc/ld.so.conf和linuxrc等文件,请问是这样吗?
    如果不是那么这些需要修改配置的文件从何而来,谢谢
     顶部
    ashizl 发表于: 2007/06/11 09:58am
    我感觉这样理解不对,内核镜像是zImage,rootfs是根文件系统,楼主的意思是你必须有一个可以用的根文件系统,然后再这个的基础上修改。这个根文件系统一般开发板都有带。我的是cramfs。
     顶部
    valima 发表于: 2007/06/12 04:01pm
    楼主有才啊!写的真不错
     顶部
    gfwangd 发表于: 2007/06/17 03:44pm
    都编译成功了,但是在目标板上时出现段错误。即segmentation fault
     顶部
    emax2004 发表于: 2007/06/22 02:47pm
    在开发板上执行./mginit,出错,提示如下:
    error while loading shared libraries:libmgext-1.3.so.3,cannot load shared lbject file,no such file or directory
    到/usr/local/lib里面,能看到libmgext-1.3.so.3文件,不知道为什么?
     顶部
    junhua198310 发表于: 2007/06/25 03:23pm

    下面引用由eMax20042007/06/22 02:47pm 发表的内容:
    在开发板上执行./mginit,出错,提示如下:
    error while loading shared libraries:libmgext-1.3.so.3,cannot load shared lbject file,no such file or directory
    到/usr/local/lib里面,能看到libmgext-1.3.so.3文 ...


    我的给楼上的一样啊
    都是按照上面移植的
    共享库路径也加入了,就是不对,库里面也有这个文件,怎么办啊
     顶部
    ashizl 发表于: 2007/07/04 09:36am
    看了触摸屏校正那块,很有帮助,接下来要实验,还请楼主多多帮助。
     顶部
    ashizl 发表于: 2007/07/07 10:46am
    请教楼主:我在编译的时候选了debug选项,怎么不输出调试信息?
     顶部
    ashizl 发表于: 2007/07/09 03:02pm
    触摸屏终于搞订了,多谢楼主的无私奉献!!
    本来我是想用tslib来提供校正信息的,但是minigui怎么着也读不进校正信息,还是在楼主文章的帮助下搞定的,再一次表示感谢!!
     顶部
    chenfeng 发表于: 2007/07/13 08:20am
    minigui 1.6.2 的menuconfig 怎么设定,为什么我编译的代码在板子上执行,触摸屏上没有显示?
     顶部
    golf 发表于: 2007/07/13 10:11am
    你好 敬爱的楼主:
    我在做最后一步的时候 mkcramfs root root.cramfs 这个生成的是cramfs格式的文件系统啊  可是我的vivi好像支持yaffs文件系统 这个矛盾如何解决。
    我也尝试用mkyaffsimage来生成yaffs文件系统 可是生成的文件有100多M,根本无法用,这怎么解决啊??
     顶部
    libra811 发表于: 2007/07/20 03:25pm
    学习一下
     顶部
    smlzmx 发表于: 2007/08/15 10:00am
    顶起来.好东西啊,就是遇到错误不能及时解决,痛苦
     顶部
    skylucifer 发表于: 2007/08/22 05:02pm
    是编码问题吧,比如你用gedit打开后再用vi打开,就可能会出现乱码,

    在gedit中进入以下路径:“编辑”“首选项”“编辑器”“保存”,取消原先的选项而选择“如果可能的话使用但前local的编码”

     顶部
    tidegfl 发表于: 2007/09/17 10:09am

    下面引用由ashizl2007/07/09 03:02pm 发表的内容:
    触摸屏终于搞订了,多谢楼主的无私奉献!!
    本来我是想用tslib来提供校正信息的,但是minigui怎么着也读不进校正信息,还是在楼主文章的帮助下搞定的,再一次表示感谢!!


    能把具体步骤也贴出来吗?
     顶部
    ashizl 发表于: 2007/09/17 01:01pm

    下面引用由tidegfl2007/09/17 10:09am 发表的内容:
    能把具体步骤也贴出来吗?


    我是先用tslib里的一个校验程序把触摸屏的四个顶点打印出来,也可以用楼主提供的程序。然后按照楼主提供的校正程序修改数组里的坐标,然后再修改2410.c。
     顶部
    zozowit 发表于: 2007/09/26 05:49pm
    移植成功后运行mginit后报出这样的错误,我搜过之前的帖子,没有找到解决办法,向各位求助
    用file命令检查了编译的那些库,都是交叉编译的
     顶部
    cxher 发表于: 2007/10/08 02:04pm
    我用PXA255的开发板,下载的MINIGUI1.3.3中mde-1.3.0中的mginit可以在板子上运行,能出来界面.
    可是运行helloword,bomb什么的就不行了总是提示以下错误:
    AttachSharedResource:No such file or directory
    Error in step7:Can not attach shared resource!
    InitGUI failure when using /etc/MiniGUI.cfg as cfg file
    这是怎么回事啊,请指教!!!!!
     顶部
    wangbo236 发表于: 2007/10/08 03:49pm
    在安装zlib成功后,要将临时改过的gcc再改回去,请问具体是怎么一个改法啊?
     顶部
    tidegfl 发表于: 2008/01/10 08:16pm

    下面引用由ashizl2007/09/17 01:01pm 发表的内容:
    我是先用tslib里的一个校验程序把触摸屏的四个顶点打印出来,也可以用楼主提供的程序。然后按照楼主提供的校正程序修改数组里的坐标,然后再修改2410.c。


    触摸屏已经可以用了,但是经常会死(光标不动了,程序还在运行),遇到过这种情况吗?
     顶部
    golf 发表于: 2008/01/14 01:55pm
    我按照大漠孤狼的文章做的。运行后分别出现狼step 4 和 step 7 的错误,按照论坛上的说法已经解决了。可是又出现了下面的这个问题。真的不知道怎么办了,哪位朋友知道吗?我先谢过了。

    [\u@\h \W]\# ./mginit
    ============= SBDevFonts ============
    0: rbf-fixed-rrncnn-8-16-ISO8859-1, charsetname: ISO8859-1, style: 0
    1: rbf-fixed-rrncnn-6-12-ISO8859-1, charsetname: ISO8859-1, style: 0
    2: qpf-unifont-rrncnn-16-16-ISO8859-1,ISO8859-15,GB2312,GBK,BIG5, charsetname0  3: qpf-unifont-rrncnn-16-16-ISO8859-1,ISO8859-15,GB2312,GBK,BIG5, charsetname0  4: qpf-times-rrncnn-5-10-ISO8859-1,ISO8859-15, charsetname: ISO8859-1, style:0  G5: qpf-times-rrcnn-5-10-ISO8859-1,ISO8859-15, charsetname: ISO8859-15, style0  6: qpf-helvetica-rrncnn-5-10-ISO8859-1,ISO8859-15, charsetname: ISO8859-1, st0  7: qpf-helvetica-rrncnn-5-10-ISO8859-1,ISO8859-15, charsetname: ISO8859-15, s0========== End of SBDevFonts =========
                                                                                 
    ============= MBDevFonts ============
    8: rbf-fixed-rrncnn-16-16-GB2312.1980-0, charsetname: GB2312-0, style: 0
    9: rbf-fixed-rrncnn-12-12-GB2312.1980-0, charsetname: GB2312-0, style: 0
    10: qpf-unifont-rrncnn-16-16-ISO8859-1,ISO8859-15,GB2312,GBK,BIG5, charsetnam0  11: qpf-unifont-rrncnn-16-16-ISO8859-1,ISO8859-15,GB2312,GBK,BIG5, charsetnam0  12: qpf-unifont-rrncnn-16-16-ISO8859-1,ISO8859-15,GB2312,GBK,BIG5, charsetnam0========== End of MBDevFonts =========
    system font 0: rbf-fixed-16-ISO8859-1
    system font 1: *-fixed-16-GB2312
    system font 2: *-Courier-16-GB2312
    system font 3: *-SansSerif-16-GB2312
    system font 4: *-Times-16-GB2312
    system font 5: *-Helvetica-16-GB2312
    IAL: Use Dummy engine.
    Can not start the server of MiniGUI-Lite: mginit.
    InitGUI failure when using /usr/local/etc/MiniGUI.cfg as cfg file.
    [\u@\h \W]\#

     顶部
    cloudlx1977 发表于: 2008/03/04 09:58am
    请问这个错误怎么解决,谢谢:

    ldconfig: /lib/libz.so.1 is not a symbolic link

    ldconfig: /lib/libpopt.so.0 is not a symbolic link

    ldconfig: /lib/libpng.so.2 is not a symbolic link

    ldconfig: /lib/libminigui-1.3.so.3 is not a symbolic link

    ldconfig: /lib/libjpeg.so.62 is not a symbolic link

     顶部
    gaomcu 发表于: 2008/03/10 03:31pm
    写的不错,学习了
     顶部
    gspring 发表于: 2008/03/11 12:36pm
    [这个贴子最后由gspring在 2008/03/11 12:38pm 第 1 次编辑]

    请教一个问题:
    ./configure中是如何检查framebuffer的?怎样使编译环境支持framebuffer?(交叉编译,不是arm)
    如果显示:checking for FrameBuffer console support... no 是不是即使--enable-galfbcon也是枉然?

    谢谢!

     顶部
    louyoung 发表于: 2008/03/12 01:05pm
    谢谢 singlewolfyu  兄,环境已经搭建好,正准备测试……
     顶部
    martin 发表于: 2008/03/12 03:04pm
    你没遇到过问题直接就过去了?,如果遇到了,改过什么地方,请写出来一下
     顶部
    miniguirm 发表于: 2008/04/23 09:12am
    [user]# tar zxf jpegsrc.v6b.tar.gz
    [user]# cd jpeg-6b
    [user]# ./configure –help    //可以查看它的配置选项
    首先在本机上编译一下,主要是它的 configure 文件设计得有问题,得先用 gcc 编译一个 dummy.c 的文件,然后才能后面编译,不然的话就会出现 libtool 找不到之类的错误

    怎么编译dummy.c啊?
    请帮个忙!急!

     顶部
    yunuo 发表于: 2008/04/23 07:52pm
    [这个贴子最后由yunuo在 2008/04/24 10:24pm 第 1 次编辑]


    下面引用由eMax20042007/06/22 02:47pm 发表的内容:
    在开发板上执行./mginit,出错,提示如下:
    error while loading shared libraries:libmgext-1.3.so.3,cannot load shared lbject file,no such file or directory
    到/usr/local/lib里面,能看到libmgext-1.3.so.3文 ...



    请问大侠们这个问题怎么解决的啊,我也碰到同样的问题,急盼回复
     顶部
    yunuo 发表于: 2008/04/26 11:37am

    下面引用由eMax20042007/06/22 02:47pm 发表的内容:
    在开发板上执行./mginit,出错,提示如下:
    error while loading shared libraries:libmgext-1.3.so.3,cannot load shared lbject file,no such file or directory
    到/usr/local/lib里面,能看到libmgext-1.3.so.3文 ...


    我是新手,遇到同样的问题,不知如何解决,请各位大侠指点一下,不甚感激
     顶部
    夜半才收 发表于: 2008/05/04 04:06pm
    我在运行./mginit时,会出现如下错误信息:
    Can not start the server of MiniGUI-Lite: mginit.
    InitGUI failure when using /etc/MiniGUI.cfg as cfg file.

    我用的是libminigui-1.3.3 + mde-1.3.0

     顶部
    夜半才收 发表于: 2008/05/04 04:36pm
    我的问题已解决。
     顶部
    夜半才收 发表于: 2008/05/04 04:39pm

    下面引用由yunuo2008/04/26 11:37am 发表的内容:
    我是新手,遇到同样的问题,不知如何解决,请各位大侠指点一下,不甚感激



    你确定你做好的根文件系统lib库下有这个库文件吗?
     顶部
    kuyon 发表于: 2008/05/07 11:20am
    真是太感谢了,我已经在基于arm的linux跑起来了,png,jpg也已经支持了
     顶部
    ashley8566 发表于: 2008/05/07 03:59pm
    按照楼主的文章可成功将新的文件系统download到我的2410板上,运行mginit后出现:
    error while loading shared libraries. 然后按照跟帖中bance的补充进行了修改,再运行mginit,出现:Can't open /dev/tty0错误,ln -s /dev/vc/0 /dev/tty0后运行mginit后出现如下显示后死机,有谁遇到过同样的问题吗? 该怎么解决呀?

    [root@FriendlyARM mginit]# ./mginit
    Samsung 320x240 LCD

    ============= SBDevFonts ============
     0: rbf-fixed-rrncnn-8-16-ISO8859-1, charsetname: ISO8859-1, style: 0
     1: rbf-fixed-rrncnn-6-12-ISO8859-1, charsetname: ISO8859-1, style: 0
     2: qpf-unifont-rrncnn-16-16-ISO8859-1,ISO8859-15,GB2312,GBK,BIG5, charsetname: ISO8859-1, style: 0
     3: qpf-unifont-rrncnn-16-16-ISO8859-1,ISO8859-15,GB2312,GBK,BIG5, charsetname: ISO8859-15, style: 0
     4: qpf-times-rrncnn-5-10-ISO8859-1,ISO8859-15, charsetname: ISO8859-1, style: 0
     5: qpf-times-rrncnn-5-10-ISO8859-1,ISO8859-15, charsetname: ISO8859-15, style: 0
     6: qpf-helvetica-rrncnn-5-10-ISO8859-1,ISO8859-15, charsetname: ISO8859-1, style: 0
     7: qpf-helvetica-rrncnn-5-10-ISO8859-1,ISO8859-15, charsetname: ISO8859-15, style: 0
    ========== End of SBDevFonts =========

    ============= MBDevFonts ============
     8: rbf-fixed-rrncnn-16-16-GB2312.1980-0, charsetname: GB2312-0, style: 0
     9: rbf-fixed-rrncnn-12-12-GB2312.1980-0, charsetname: GB2312-0, style: 0
     10: qpf-unifont-rrncnn-16-16-ISO8859-1,ISO8859-15,GB2312,GBK,BIG5, charsetname: GB2312-0, style: 0
     11: qpf-unifont-rrncnn-16-16-ISO8859-1,ISO8859-15,GB2312,GBK,BIG5, charsetname: GBK, style: 0
     12: qpf-unifont-rrncnn-16-16-ISO8859-1,ISO8859-15,GB2312,GBK,BIG5, charsetname: BIG5, style: 0
    ========== End of MBDevFonts =========
    system font 0: rbf-fixed-16-ISO8859-1
    system font 1: *-fixed-16-GB2312
    system font 2: *-Courier-16-GB2312
    system font 3: *-SansSerif-16-GB2312
    system font 4: *-Times-16-GB2312
    system font 5: *-Helvetica-16-GB2312
    IAL: Use Dummy engine.
    IME: Loading Input Method 0: pinyin
    new child, pid: 59.
    Samsung 320x240 LCD

    ============= SBDevFonts ============
     0: rbf-fixed-rrncnn-8-16-ISO8859-1, charsetname: ISO8859-1, style: 0
     1: rbf-fixed-rrncnn-6-12-ISO8859-1, charsetname: ISO8859-1, style: 0
     2: qpf-unifont-rrncnn-16-16-ISO8859-1,ISO8859-15,GB2312,GBK,BIG5, charsetname: ISO8859-1, style: 0
     3: qpf-unifont-rrncnn-16-16-ISO8859-1,ISO8859-15,GB2312,GBK,BIG5, charsetname: ISO8859-15, style: 0
     4: qpf-times-rrncnn-5-10-ISO8859-1,ISO8859-15, charsetname: ISO8859-1, style: 0
     5: qpf-times-rrncnn-5-10-ISO8859-1,ISO8859-15, charsetname: ISO8859-15, style: 0
     6: qpf-helvetica-rrncnn-5-10-ISO8859-1,ISO8859-15, charsetname: ISO8859-1, style: 0
     7: qpf-helvetica-rrncnn-5-10-ISO8859-1,ISO8859-15, charsetname: ISO8859-15, style: 0
    ========== End of SBDevFonts =========

    ============= MBDevFonts ============
     8: rbf-fixed-rrncnn-16-16-GB2312.1980-0, charsetname: GB2312-0, style: 0
     9: rbf-fixed-rrncnn-12-12-GB2312.1980-0, charsetname: GB2312-0, style: 0
     10: qpf-unifont-rrncnn-16-16-ISO8859-1,ISO8859-15,GB2312,GBK,BIG5, charsetname: GB2312-0, style: 0
     11: qpf-unifont-rrncnn-16-16-ISO8859-1,ISO8859-15,GB2312,GBK,BIG5, charsetname: GBK, style: 0
     12: qpf-unifont-rrncnn-16-16-ISO8859-1,ISO8859-15,GB2312,GBK,BIG5, charsetname: BIG5, style: 0
    ========== End of MBDevFonts =========
    system font 0: rbf-fixed-16-ISO8859-1
    system font 1: *-fixed-16-GB2312
    system font 2: *-Courier-16-GB2312
    system font 3: *-SansSerif-16-GB2312
    system font 4: *-Times-16-GB2312
    system font 5: *-Helvetica-16-GB2312
    New comming in client:
    Create a new layer: vcongui
    New layer created: vcongui; client: NULL
    Change topmost layer to vcongui; client: NULL
    Join a client (vcongui) to layer vcongui
    New client joined layer: (vcongui, vcongui)
    Change active client: (vcongui, vcongui)
    Rect of client (vcongui): (0, 0, 320, 188)

     顶部
    tssdnr 发表于: 2008/05/11 08:17am
    [这个贴子最后由tssdnr在 2008/05/11 08:33am 第 1 次编辑]

    前面都按照帖子步骤做好了,configure libminigui时:checking for jpeg_std_error in -ljpeg... yes,但是make时依然出错,信息如下:
    /usr/local/arm/2.95.3/arm-linux/bin/ld: template.lo: Relocations in generic ELF
    (EM: 3)
    template.lo: could not read symbols: File in wrong format
    collect2: ld returned 1 exit status
    make[3]: *** [libminigui.la] Error 1
    make[3]: Leaving directory `/home/minigui/s3c2440/libminigui-1.3.3/src'
    make[2]: *** [all-recursive] Error 1
    make[2]: Leaving directory `/home/minigui/s3c2440/libminigui-1.3.3/src'
    make[1]: *** [all-recursive] Error 1
    make[1]: Leaving directory `/home/minigui/s3c2440/libminigui-1.3.3'
    make: *** [all] Error 2

    我又去重新编译了template.c程序在libminigui-1.3.3/[src,ext]中的都重新编译了,再make时又出现新的问题
    /usr/local/arm/2.95.3/arm-linux/bin/ld: newgal/.libs/libnewgal.al(yuv_mmx.lo): Relocations in generic ELF (EM: 3)
    newgal/.libs/libnewgal.al(yuv_mmx.lo): could not read symbols: File in wrong format
    collect2: ld returned 1 exit status
    make[3]: *** [libminigui.la] Error 1
    make[3]: Leaving directory `/opt/sbc2410/libminigui-1.3.3/src'
    make[2]: *** [all-recursive] Error 1
    make[2]: Leaving directory `/opt/sbc2410/libminigui-1.3.3/src'
    make[1]: *** [all-recursive] Error 1
    make[1]: Leaving directory `/opt/sbc2410/libminigui-1.3.3'
    make: *** [all] Error 2
    我都又重装了几次了,还是不行?能帮我看看是什么问题吗?
    不过我在把template.o 和template.lo文件删除掉
    在终端执行先面命令(终端也要进入到libminigui-1.3.3/src目录下)
    arm-linux-gcc -c -fPIC -O2 template.c
    然后再执行 arm-linux-gcc --shared -o template.so *.o
    后没有生成template.lo文件,会是这的问题吗?
    还有帖子中说的
    “现在来安装 jpeg 库
    [user]# tar zxf jpegsrc.v6b.tar.gz
    [user]# cd jpeg-6b
    [user]# ./configure –help    //可以查看它的配置选项

    首先在本机上编译一下,主要是它的 configure 文件设计得有问题,得先用 gcc 编译一个 dummy.c 的文件,然后才能后面编译,不然的话就会出现 libtool 找不到之类的错误 :”
    这是什么意思,我没有去找dummy.c文件,jpeg库安装成功,这里会有影响吗?
    请高手指点啊!我都弄了几天了还是不行.....重装过n次了....

    我用的是RH9,libminigui-1.3.3,前面都是按照lz的帖子做的...这里问题出在哪呢?请各位高手、大侠们指点下,不胜感激!焦急等待中

     顶部
    tssdnr 发表于: 2008/05/11 10:36pm

    下面引用由singlewolfyu2006/11/08 11:07am 发表的内容:
    本文是用 Word 写的,本来想当成附件发上来,结果系统说“发贴数大于10篇才能上传附件!”,让我暴汗~~~~~
    所以就直接 Copy 上来了,有Word 中有一些加红,加黑表示要注意的地方这里显示不出来,大家将就着 ...


    "假设你已经有一个可以在板子上跑的 Linux 系统了,并且已经有一个可以用的根文件系统了,并且已经有了板子相对应的LCD的驱动程序,"怎么理解?不是很明白,怎么制作文件系统,接下来的那些文件怎么产生的啊../etc/ld.so.conf等,哪位高手指点下啊?焦急。。。
     顶部
    linzhaojian 发表于: 2008/05/13 01:12pm
    输入引擎,我想用USB鼠标,哪位大哥能介绍下怎么配置吗?
     顶部
    kooking 发表于: 2008/05/17 04:27pm
    受益非浅
     顶部
    高兴就好 发表于: 2008/07/03 09:04pm
    非常由衷的感谢楼主
    对我帮助很大
     顶部
    kenme 发表于: 2008/07/28 10:50am
    学习了,顶起来!
     顶部
    xjwhangdian 发表于: 2008/07/30 02:24pm
    我按着word中的步骤一步一步来的,PC机上安装成功了,可是为实验班进行交叉编译的时候出现问题了,安装zlib-1.2.3的时候就出现问题了,卡在这一步了
     顶部
    miniguirm 发表于: 2008/12/04 03:35pm
    请教各位一个问题:
    楼主在触摸屏程序中有一段代码如下:
    if(last_pressure==0 || (last_pressure>0 && abs(new_x-mousex)<7))
                         mousex=new_x;
    if(last_pressure==0 || (last_pressure>0 && abs(new_y-mousey)<7))
                         mousey=new_y;
    其中的数字7是怎么来的?还请高手帮忙解释一下,在此表示感谢了!
     顶部
    fanguo 发表于: 2008/12/17 08:53pm
    [root@localhost root]# ldconfig -r /opt/rootfs/
    ldconfig: /usr/local/lib/libz.so.1 is not a symbolic link
    ldconfig: /usr/local/lib/libvcongui-1.3.so.3 is not a symbolic link
    ldconfig: /usr/local/lib/libpopt.so.0 is not a symbolic link
    ldconfig: /usr/local/lib/libpng.so.2 is not a symbolic link
    ldconfig: /usr/local/lib/libminigui-1.3.so.3 is not a symbolic link
    ldconfig: /usr/local/lib/libmgext-1.3.so.3 is not a symbolic link
    ldconfig: /usr/local/lib/libjpeg.so.62 is not a symbolic link

    这个不知道正确的解决方式是什么~

     顶部
    letlet 发表于: 2008/12/24 03:46pm
    哇哇哇,,辛苦了
     顶部