编译skyeye-1.2.4 笔记
(一)编译源码今天发现skyeye-1.2.4 Relase了,到http://sourceforge.net/project/showfiles.php?group_id=85554下载下来,解压,#cd skyeye-1.2.4
# make
.......
--start-group -Lbinary -larm -ldev -lutils -lbfin -lcoldfire -lppc -lmips -lbfd -liberty --end-group -lm -Wl,--export-dynamic -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangoxft-1.0 -lpangox-1.0 -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0
binary/libppc.a(ppc_mmu.o)(.text+0x1c7e): In function `ppc_mmu_set_sdr1':
arch/ppc/common/ppc_mmu.c:1273: undefined reference to `prom_quiesce'
collect2: ld returned 1 exit status
make: *** Error 1
打开arch/ppc/common/ppc_mmu.c 找到1273,注释掉if (quiesce) {
prom_quiesce();
}我看到quiesce==false,该if里面应该不执行的,不知道有什么作用?
# make
--start-group -Lbinary -larm -ldev -lutils -lbfin -lcoldfire -lppc -lmips -lbfd -liberty --end-group -lm -Wl,--export-dynamic -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangoxft-1.0 -lpangox-1.0 -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0
****
**** The binary file located at 'binary/skyeye', enjoy it.
****
成功了!!!
(二)运行测试用例
# cd skyeye-testsuite-2.2
# cd s3c2410x-2.6.14/
# ls
initrd.img skyeye.conf vmlinux
# skyeye -e vmlinux
big_endian is false.
arch: arm
cpu info: armv4, arm920t, 41009200, ff00fff0, 2
mach info: name s3c2410x, mach_init addr 0x8080354
ethmod num=1, mac addr=0:4:3:2:1:f, hostip=10.0.0.1
lcd_mod:1
段错误
出错了!注释掉skyeye.conf中的lcd: type=s3c2410x, mod=gtk
# skyeye -e vmlinux
可以运行起来,看来是LCD的支持出了问题。
(三)找LCD问题
发现device\lcd\skyeye_lcd_gtk.c的464行if (gtk_init_check(&global_argc, &global_argv) == FALSE) {
出错,打印发现global_argc,global_argv都没赋值,找到utils\main\skyeye.c的main (int argc, char **argv),加入
global_argc=argc;
global_argv=argv;
# make
# cp binary/skyeye /usr/local/bin/
# skyeye -e vmlinux
运行正常!成功了。
[ 本帖最后由 lvcoffee 于 2007-11-16 10:53 编辑 ] Thanks! Great help for us. I will do some investigation about your report. 这篇文章应该进入精华贴,
直到今天安装还是要按这个说明来改的,也不知为什么,
我的系统是rh9,(vmware里的),skyeye0.98本来装好了,但是几个testsuit用不起来,现在1.2.4总算是好了.
楼主真是个强人啊. I had submited this bug at https://sourceforge.net/tracker/index.php?func=detail&aid=1902698&group_id=85554&atid=576533
So we can track it and fix it in the coming release
回复 #1 lvcoffee 的帖子
您好,我按照您的帖子安装1.2.4版,make时没有出现错误,但在运行同一个测试用例时(我用的是testsuite2.3版的),
在没有改skyeye.conf(没有去掉lcd那行)文件时,停留在Loaded ARM ./initrd.img 并且系统发出错误报告;
在改过skyeye.conf(去掉lcd那行)之后,并且在skyeye.c中加入您提到的那两个语句,执行时还是出现“段错误”的提示,不知道该如何解决 请您指点,谢谢!
疑问。。。
您好,我又测试了一下测试包中的其他示例,都是出现类似如下错误:(以下是testsuite2.3中,linux下ep7312中的vmlinux-8-332 ,执行skyeye -e vmlinux-8-332后的输出)big_endian is false.
arch: arm
cpu info: armv4, arm920t, 41807200, ffffff00, 1
mach info: name ep7312, mach_init addr 0x8066d90
dbct info:turn offdbct!
uart_mod:0, desc_in:, desc_out:, converter:
SKYEYE: use arm7100 mmu ops
Loadded ROM ./ywcromfs-minigui.img
段错误
试了好几个都是段错误,不知道为什么?还望高手指点! 谢谢! 能否用gdb跟踪一下?
gdb skyeye
set args -e vmlinux-8-332
run
backtrace.
这样我可以知道你的错误大概是什么原因?或者你描述你一下你的开发使用环境?
调试
谢谢ksh的回复, 我用VMware虚拟FC8 Linux系统,按照调试方法 截图如下:(我调试的是LZ测试的s3c2410x-2.6.14例子中的vmlinux) 错误发生在 utils/main/skyeye.c 的第 416 行:
printf ("exec file \"%s\"'s format is %s.\n", file,
tmp_bfd->xvec->name);
按你给的结果 file 内容为 vmlinux,但当 tmp_bfd->xvec->name 为 NULL 可引发 printf 异常。
初步猜测原因:bfd 库版本太低
解决方案:请安装新版本的 binutils-dev 或者使用 make NO_BFD=1 编译。
回复 #9 AnthonyLee 的帖子
谢谢 我已经在RedHat 企业4版本下直接安装成功(用的make NO_BFD=1 编译的) 呵呵
页:
[1]