移植MiniGUI的调试记录

来源:互联网 发布:kali linux有什么用 编辑:程序博客网 时间:2024/05/17 23:57

将minigui移植到目标上:
1,复制libc,ld等工具到/lib中;
2,复制库文件
将库文件拷贝到/lib下,资源文件到/lib/minigui下,修改/usr/local/etc/Minigui.cfg将所有/usr/local/lib 替换成/lib
3,建立mknod fb c 29 0
/dev/input下建mknod mice c 13 63
Tslib交叉编译环境问题心得  
Q1:在交叉编译TSLIB的时候出现了libtool:link: only absolute run-paths are allowed错误
解决方法:要修改/tslib/plugins/Makefile里面找rpath,找到将其注释并加上绝对路径。
找到:LDFLAGS :=$(LDFLAGS) -rpath $(PLUGIN_DIR)
修改为:
LDFLAGS :=$(LDFLAGS) -rpath `cd $(PLUGIN_DIR) && pwd`  (这个是顿号)
现象:
我在板子上运行./ts_test的时候,总是提示我:ts_open: No such file or directory?
这个问题曾经也折腾了我好久
在tslib的config选项中添加
--enable-inputapi=no
原因
(1)因为这个情况一般是你的触摸屏驱程不支持ioctl操作。
(2)更改相应的环境变量
export QWS_MOUSE_PROTO = TPanel:/dev/tp
export T_ROOT=/
export LD_LIBRARY_PATH=/lib
export TSLIB_CONSOLEDEVICE=none  
export TSLIB_TSDEVICE=/dev/tp
export TSLIB_CALIBFILE=/etc/pointercal     
export TSLIB_CONFFILE=/etc/ts.conf   
export TSLIB_PLUGINDIR=/plugins
老出现以下错误:
/demo/same # ./same
AttachSharedResource: No such file or directory
Error in step 7: Can not attach shared resource!
InitGUI failure when using /usr/local/etc/MiniGUI.cfg as cfg file.
原因是:Resource不完整重新编译一遍minigui

现象:
/demo/bomb # ./bomb
./bomb: relocation error: /lib/libminigui-1.3.so.3: undefined symbol: sem_init
/demo/bomb # cd ..
/demo # cd same/
/demo/same # ./same
./same: relocation error: /lib/libminigui-1.3.so.3: undefined symbol: sem_init
原因:
由于我重新编译了libminigui的库,所以mde-1.3.0也要重新编译
现象:
/usr/local/arm/3.4.1/lib/gcc/arm-linux/3.4.1/../../../../arm-linux/lib/libminigui.so: undefined reference to
`pthread_create'
/usr/local/arm/3.4.1/lib/gcc/arm-linux/3.4.1/../../../../arm-linux/lib/libminigui.so: undefined reference to
`sem_destroy'
/usr/local/arm/3.4.1/lib/gcc/arm-linux/3.4.1/../../../../arm-linux/lib/libminigui.so: undefined reference to
`sem_wait'
/usr/local/arm/3.4.1/lib/gcc/arm-linux/3.4.1/../../../../arm-linux/lib/libminigui.so: undefined reference to
`sem_post'
/usr/local/arm/3.4.1/lib/gcc/arm-linux/3.4.1/../../../../arm-linux/lib/libminigui.so: undefined reference to
`pthread_kill_other_threads_np'
/usr/local/arm/3.4.1/lib/gcc/arm-linux/3.4.1/../../../../arm-linux/lib/libminigui.so: undefined reference to
`sem_init'
/usr/local/arm/3.4.1/lib/gcc/arm-linux/3.4.1/../../../../arm-linux/lib/libminigui.so: undefined reference to
`sem_getvalue'
/usr/local/arm/3.4.1/lib/gcc/arm-linux/3.4.1/../../../../arm-linux/lib/libminigui.so: undefined reference to
`pthread_join'
原因:
由于我重新编译了libminigui的库,所以编译mde-1.3.0时不能定位到新的/usr/local/arm/3.4.1/lib/gcc/arm-
linux/3.4.1/../../../../arm-linux/lib/libminigui.so上,
解决方法是重新配置mde-1.3.0, ./configure CC=arm-linux-gcc --build=i686-pc-linux --target=arm-linux --host=arm-linux
prefix=/usr/local/arm/3.4.1/arm-linux
这样再次make就会顺利通过

现象:
/demo/notebook # ./notebook
Aborted
原因:
现象
(1)/demo/same # ./same
./same: relocation error: /lib/libminigui-1.3.so.3: undefined symbol: TT_Init_FreeType
(2)
/usr/local/arm/3.4.1/lib/gcc/arm-linux/3.4.1/../../../../arm-linux/lib/libminigui.so: undefined reference to
`TT_New_Glyph'
/usr/local/arm/3.4.1/lib/gcc/arm-linux/3.4.1/../../../../arm-linux/lib/libminigui.so: undefined reference to
`TT_CharMap_First'
/usr/local/arm/3.4.1/lib/gcc/arm-linux/3.4.1/../../../../arm-linux/lib/libminigui.so: undefined reference to
`TT_Set_Instance_Transform_Flags'
/usr/local/arm/3.4.1/lib/gcc/arm-linux/3.4.1/../../../../arm-linux/lib/libminigui.so: undefined reference to
`TT_Load_Glyph'
原因:
libminigui要完全重新编译一次先make clean,再make,make install
现象
arm-linux-gcc  -g -O2 -Wall -Wstrict-prototypes -pipe -D_REENTRANT   -o notebook  main.o -lmgext -lpthread -lminigui
/usr/local/arm/3.4.1/lib/gcc/arm-linux/3.4.1/../../../../arm-linux/lib/libminigui.so: undefined reference to
`ts_close'
/usr/local/arm/3.4.1/lib/gcc/arm-linux/3.4.1/../../../../arm-linux/lib/libminigui.so: undefined reference to
`ts_read'
/usr/local/arm/3.4.1/lib/gcc/arm-linux/3.4.1/../../../../arm-linux/lib/libminigui.so: undefined reference to
`ts_open'
/usr/local/arm/3.4.1/lib/gcc/arm-linux/3.4.1/../../../../arm-linux/lib/libminigui.so: undefined reference to `ts_fd'
collect2: ld returned 1 exit status
make[2]: *** [notebook] 错误 1
原因
编译时要加入链接库tslib
修改configure命令
./configure CC=arm-linux-gcc --build=i686-pc-linux --target=arm-linux --host=arm-linux CFLAGS="-
L/usr/local/arm/3.4.1/arm-linux/lib -lts"
现象:
/demo/same # ./same
IAL: Can not open mouse-like device!
IAL: Init IAL engine failure.
DESKTOP: Low level event initialization failure!
InitGUI failure when using /usr/local/etc/MiniGUI.cfg as cfg file.
原因:
minigui的输入引擎文件初始化出现问题,dummy.c文件的InitDummyInput写的有问题open()函数有问题得重新修改
加入tslib后minigui,mde的编译选项
minigui的./config选项:./configure CC=arm-linux-gcc --build=i686-pc-linux --target=arm-linux --host=arm-linux --
disable-galqvfb --disable-galecoslcd --disable-vbfsupport --prefix=/usr/local/arm/3.4.1/arm-linux CFLAGS="-
I/usr/local/arm/3.4.1/arm-linux/include -L/usr/local/arm/3.4.1/arm-linux/lib -lts"
mde的./config选项:./configure CC=arm-linux-gcc --build=i686-pc-linux --target=arm-linux --host=arm-linux  
CFLAGS="I/usr/local/arm/3.4.1/arm-linux/include -L/usr/local/arm/3.4.1/arm-linux/lib -lts"
移植到其他机子上时文件系统的改动:
(1)文件系统复制时dev/目录下的节点无法复制得自己重新创建才行
(2)若是minigui的系统话还得改/usr/local/etc/MiniGUI.cfg,得改成640*480的屏才行
(3)若加了tslib自校准库的话得改/etc/ts.conf改成:
module mousebuts
#module variance xlimit=50 ylimit=50 pthreshold=3
#module dejitter xdelta=1 ydelta=1 pthreshold=3
module linear
当我注释掉variance和dejitter的时候,光标会移动,但偏差较大,当我只注释variance时,仍然会随我移动,但当我都不注释回复
到默认的情况时,仍然不会随我移动。最后我把moudule mousebuts注释取消掉,光标又会随我移动了,并且效果比前面的都好。纳闷
了既然module mousebuts会直接影响成功与否,variance,为什么最初会默认注释掉?而且module mousebuts的作用我也不是很清楚

现象:
运行./ts_calibrate又出现了令人十分之郁闷的错误:
ts_config: Success
追查后应该是在打开ts_config中出现了错误(居然报Success,无欲至极)
在网上发现多是这个错误(这是1.4版本的错):
Couldnt load module input
No raw modules loaded
tsconfig: Success
我没有上面那两行的错误,不过应该是一样的错误原因
那么错误就定位在 ts_config 里。并且可以进一步确定是在加载插件模块时出的错
另一个原因就是你没有正确配置TSLIB_PLUGINDIR,tslib从你指定的目录中没有找到plugin需要的模块文件,
请检查你的路径和文件。

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/99507/showart_1988727.html

原创粉丝点击