我觉得写《源码开...》一书的作者很不负责任!
首先想说,以下的都是一个菜鸟的观点,对于嵌入式和linux系统的老鸟大侠来说,可能根本不是什么问题。但是还是论坛中的朋友们帮助解决。在china-pub上买到这个书已经二个月了,看到作者说到自己的书是针对嵌入式系统开发的入门者的,本来很兴奋,以为以此为契机就可以开始对嵌入式系统的学习。
然后用了一个半月的时间来把书配光盘上的skyeye的软件按照书上说的方法一步一步安装到我的RH9 linux上。
但是后来才发现这个是一个完全不可能的事情。
每次都遇到错误,完全让人没有兴趣了。
仔细看论坛上的帖子,很多初学者都象我这样
在问根本上没有涉及到通过skyeye怎样进行嵌入式开发的问题
反倒是在怎么安装这个软件上讨论来讨论去
书中完全没有考虑到相对于我们这些入门者的想法,编译上应该注意的问题完全也没有提及,浪费了很多的时间,确没有达到应该有的效果。
我觉得作者们出书的时候至少应该把书配的光盘上的软件验证一下
到底能不能make,到底能不能make install
作者不妨试试,用新安装的linux的操作系统,自己按照自己书上写的文字把自己的软件验证一下,到底能不能正常使用。如果不能正常安装使用,应该怎样安装配置?至少应该给一个注意事项的使用说明。
对于论坛上不断有新版本的skyeye发布,那可以算是锦上添花了,但是最初级最简单的问题都没有办法解决
实在是让人伤心。
对于这个方面,我觉得国内的作者距离国外的作者相差的太远了。还有很多的路要走。
=================================
还是为了学习进步吧,编译时候出现这个错误信息是什么原因造成的?
make的时候
...省略很多的打印信息...
gcc -g -O2 -o gdb main.o libgdb.a rdi-share/libangsd.a../sim/arm/libsim.a ../bfd/libbfd.a ../readline/libreadline.a ../opcodes/libopcodes.a../libiberty/libiberty.a -lncurses -lm
../libiberty/libiberty.a`gtk-config --libs` -ldl -rdynamic
rdi-share/libangsd.a(hsys.o)(.text+0xfa5): In function `HandleSysMessage':
/usr/local/uclinux/gdb-5.0/gdb/rdi-share/hsys.c:830: the use of `tmpnam' is dangerous, better use `mkstemp'
rdi-share/libangsd.a(etherdrv.o)(.text+0x35b): In function `EthernetMatch':
/usr/local/uclinux/gdb-5.0/gdb/rdi-share/etherdrv.c:569: undefined reference to `__ctype_tolower'rdi-share/libangsd.a(unixcomm.o)(.text+0x104): In function `Unix_MatchValidSerialDevice':
/usr/local/uclinux/gdb-5.0/gdb/rdi-share/unixcomm.c:180: undefined reference to `__ctype_tolower'rdi-share/libangsd.a(unixcomm.o)(.text+0x4b5): In function `Unix_IsValidParallelDevice':
/usr/local/uclinux/gdb-5.0/gdb/rdi-share/unixcomm.c:389: undefined reference to `__ctype_tolower'collect2: ld returned 1 exit status
make: *** Error 1
make: Leaving directory `/usr/src/skyeye/gdb'
make: *** Error 2
然后就出错了,不能make过去
我的电脑上并没有/usr/local/uclinux/gdb-5.0这个目录
为什么编译的时候还会指向这个地方?
是什么原因?
谢谢各位了。 这个我认为一方面是open source固有的问题,当然可能也有一些作者的失误,没有更好的考虑道初学者。
Linux的版本众多,SkyEye不可能在每一个版本都测试过。即使是同一个版本,另外每一个人安装的时候的选项不一样,这在书中很难全部覆盖。大家业余做的东西,确实也没有这么多的资源去做测试,去为不同的用户考虑得周全。如果你完全使用作者书中的那个linux版本,那个配置的话,我相信还是可以编译通过的。但是其它版本就很难说,要靠运气了。
另外有些问题是属于比较基础的问题,这本书总不能讲很多Linux的基础命令,网络配置之类的一些话题的。比如说有些人执行当前路径下的命令,没有加 ./ 或者有些用户在想执行一个文件,却没有给这个文件架可执行权限,诸如此类的问题,这个在一本讲嵌入式的一本书中总不能都覆盖啊。
注:个人的看法。 对于很多undefined reference的错误,一般两个根源:
1 缺少某一个库文件,因为在你安装系统时linux不能预先知道你需要哪些库文件。所以需要从光盘或者网上找一些库来安装, 运气好的话有现成的二进制包和rpm包,直接下载下来用就可以了,运气不好的话要下载代码编译一下.
2 安装了这个库文件,但是这个库文件中并没有包含你要的那个reference,你可以用nm来看这个库中的符号表,重新编译这个库,加入你需要的功能。因为有些库很大,比如说C库,它默认编译的时候不可能把所有的功能全部编译进去。它只编译了一些常用的功能,比如字符串,数学运算等等。
注:假如你对编译,库等这些概念还不清楚或者没有使用过nm,objdump等工具的话,那你需要先补一些基础的知识. 两个建议:
一、初学入门先不要急于自己从源码开始编译 skyeye ,直接用光盘上的 binary 就可以进行测试和使用。 skyeye 类似 gdb ,很少有人用的 gdb 是自己从源码编译得到的。
二、编译遇到问题是件好事,正是从解决一个个问题的锻炼中能力才会有所提高。如果仅仅希望了解一下流程,那么看一下视频教程也许能更快地达到目的。
作为书的作者之一,我是第一次写书,肯定会有一些问题和不足需要大家指正。:oops: 本书的第5章、第8章和第9章的1-8小节基本都是我写的。如果阅读和实践中有什么问题,可以直接和我讨论。 我是初学者。
我为了装skyeye,重装了RedHat8.0不下五次,安装skyeye n次。:lol:
最后没辙了,按光盘上的说明书一次就搞定了。(这就是不喜欢看说明的结果).
自己安装过程中多多少少学到了东西:
第一次安装时,报错:没有gtk库。最后找到了原因:安装时为了节省空间,没有加入gtk开发套件。
第二次安装时,报错:没有tck。最后找到原因:安装时为了节省空间,没有安装内核开发工具。
第三次安装时,成功了!
第四次安装时,我想这次应该也会成功。没有*.elf文件。
......
最后没办法了,只好Windows底下的E盘,弄过来给linux,重装linux.按照说明安装,成功!
总结: 一次就成功不见得是好事。 楼主太偏激了,你平心静气的把说明读一遍,
然后按照说明一步步的往下做,
其实大家都有是新手的阶段,都是经过无数次的不成功
才学到东西的。 呵呵,我已经尽量把语气放的平和了
楼上的兄台还是觉得我说话太偏激了。
我听取各位意见,还是先个人积累知识好了。
虽然现在还是不能正常使用,但还是谢谢各位。
页:
[1]