db10 发表于 2007-12-6 18:25

whereis

&nbsp;这几天在编译gdb+gdbserver,&nbsp;要么是编译错误,要么是编译好gdbserver后,下到at91rm9200板子上不能用。目前用得是gdb6.0,编译器有gcc2.95.3,也用过3.3.2。linux是2.4的。<br />&nbsp;&nbsp;编译时开始编译gdb还可以通过,第二次make编译gdbserver有连接重定位错误(不是语法得问题能搞定的)。<br />&nbsp;&nbsp;你这方面怎么样?哪个版本得源gdb和配合得比较好,你用哪个版本?你有比较好得编译和使用资料吗?

db10 发表于 2007-12-6 18:33

我直接下了个别人的gdbserver和连接库文件,也提示:

$gdbserver:&nbsp;error&nbsp;in&nbsp;loading&nbsp;shared&nbsp;libraries:&nbsp;libthread<br />_db.so.1:&nbsp;cannot&nbsp;open&nbsp;shared&nbsp;object&nbsp;file:&nbsp;No&nbsp;such&nbsp;file&nbsp;or&nbsp;directory<br /><br />当然我也不知道他这个gdbserver和库是好,还是针对什么的,我下了个我机子上的libthread_db-1.0.so也不行。<br />&nbsp;我发现我机子上这样的库有好几个,在每个gcc编译器下有一个,如2.95.3和3.3.2下,还有PC的linux也有一个,应该一样吗?

whereis 发表于 2007-12-6 19:36

.

/usr/local/arm/3.4.1/arm-linux/lib/libthread_db-1.0.so<br />/usr/local/arm/3.4.1/arm-linux/lib/libthread_db.so&nbsp;-&gt&nbsp;libthread_db.so.1<br />/usr/local/arm/3.4.1/arm-linux/lib/libthread_db.so.1&nbsp;-&gt&nbsp;libthread_db-1.0.so<br /><br />libthread_db.so.1&nbsp;is&nbsp;symbol&nbsp;link,你手动link一下。<br /><br />gdbserver,暂时没整过,later。<br />

whereis 发表于 2007-12-6 20:09

.

pc的应该是对应x86体系的。<br />你的交叉编译器的库,才是对应arm的。<br />2.95.3和3.3.2,肯定不能随便混用的,否则绝对会出现“XXX&nbsp;undefined&quot;,这种问题遇到太多了。<br /><br />=====================================================================<br />我发现我机子上这样的库有好几个,在每个gcc编译器下有一个,如2.95.3和3.3.2下,还有PC的linux也有一个,应该一样吗?

db10 发表于 2007-12-6 23:41

ftp下了两个新的gdbserver源码

&nbsp;明天再编译试试。<br /><br />&nbsp;/usr/local/arm/3.4.1/arm-linux/lib/libthread_db-1.0.so<br />/usr/local/arm/3.4.1/arm-linux/lib/libthread_db.so&nbsp;-&gt&nbsp;libthread_db.so.1<br />/usr/local/arm/3.4.1/arm-linux/lib/libthread_db.so.1&nbsp;-&gt&nbsp;libthread_db-1.0.&nbsp;<br /><br />这个我之前试过了。

db10 发表于 2007-12-8 00:40

现在编译可以 但是问题还有

&nbsp;在板子上打gdbserver&nbsp;:2345&nbsp;程序后:<br />ld-linux-2.1.3&nbsp;连接有问题&nbsp;libc.so.6

whereis 发表于 2007-12-8 10:11

.

libc.so.6也是链接<br /><br />/usr/local/arm/3.4.1/arm-linux/lib/libc.so<br />/usr/local/arm/3.4.1/arm-linux/lib/libc.so.6&nbsp;-&gt&nbsp;libc-2.3.2.so<br />/usr/local/arm/3.4.1/arm-linux/lib/libc-2.3.2.so&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />/usr/local/arm/3.4.1/arm-linux/lib/libc.a<br /><br />/usr/local/arm/3.4.1/arm-linux/lib/ld-2.3.2.so<br />/usr/local/arm/3.4.1/arm-linux/lib/ld-linux.so.2&nbsp;-&gt&nbsp;ld-2.3.2.so

db10 发表于 2007-12-9 14:29

是得 都是连接问题

&nbsp;可是我的根本件下面ramdisk解开后库文件的版本低,好像全是1.3.2版本的(在家没带板子),就是说libc-2.3.2.so,ld-2.3.2.so,还很多别的库文件都是1.0版本的。其实这些库只是版本低,在原来的ramdisk里都有,但是提示找不到。你上一步我也是跟综过的。<br />&nbsp;然而我用新的如gcc&nbsp;3.3.2或3.4.1里面的库换掉后换掉后,如换成libc-2.3.2.so,ld-2.3.2.so,连根文件ramdisk启动不来,也就是说要改动init部分,也就意外重新做busybox部分,那工作量更大,然而我也做了busybox,发现新做的busybox做成ramdisk后,内核起不料,处在init过不去。<br /><br /><br />

db10 发表于 2007-12-9 15:19

。。。

&nbsp;所以我尝试加了一个库文件后,出现了更过的库文件找不到。其实这些库文件原来都是有,但是版本低,而这些低版本的库文件我还没有找到。因为原来ramdisk的库文件原始lib没有。<br />&nbsp;

db10 发表于 2007-12-9 15:45

whereis

&nbsp;你调试linux&nbsp;下应用程序用什么?就是模拟的PC上GDB+打印?除了贵的仿真器外。

rockos 发表于 2007-12-9 17:31

.

whereis被咬上了

db10 发表于 2007-12-9 21:46

rockos

&nbsp;呵呵,你不要在旁边偷着笑。你也是大牛啊。<br />&nbsp;whereis&nbsp;我的邮箱是duanshenzhen@126.com<br />&nbsp;<br />&nbsp;我的板子nfs已经被我移植成功,可以nfs的,nfs只是从PC上下文件到板子上方便,不是调试应用程序的.这个是做linux必须有的了。<br />&nbsp;现在如果能把ramdisk搞定,估计上面的错误不会有了。因为gdbserver已经编译成功了,并且是使用gdbserver时出现的提示问题。<br />&nbsp;whereis&nbsp;&nbsp;我的ramdisk里有busybox的,包括init都是busybox生成的啊,这样跟内核配合的。是用ramdisk做根文件系统的.<br />&nbsp;之前我编译过busybox和ramdisk,发现内核启动时,有错误,后来放弃了,看来这次真的要重新试试了。<br />&nbsp;等这次把整个工作做完,把我做过得文档也给大家分享一下!<br />&nbsp;

db10 发表于 2007-12-10 12:21

....

&nbsp;收到你发给我的东东。<br />&nbsp;用你的做成后,u-boot启动命令设置是这种形式吗:<br />&nbsp;bootargs&nbsp;root=/dev/ram&nbsp;rw&nbsp;initrd=0x21100000,8000000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ramdisk_size=20000&nbsp;&nbsp;console=ttyS0,115200,mem=32M&nbsp;吗?<br />还有&nbsp;bootcmd=cp.b&nbsp;10020000&nbsp;21000000&nbsp;d2536;cp.b&nbsp;10200000&nbsp;21100000&nbsp;6a79ff;bootm&nbsp;21000000(2个拷贝分别对应内核,ramdisk从flash到ram)其中有变化吗?<br />&nbsp;我还没有仔细看你的。<br />

rockos 发表于 2007-12-10 14:21

re

gdb和gdb&nbsp;server在gdb软件包中都有,&nbsp;你在编译前,&nbsp;应当首先向cross&nbsp;toolchain中加入ncurse库,&nbsp;或者旧的terminfo库也行<br /><br />我用gcc-3.4.6编译gdb-6.6,&nbsp;很好用

rockos 发表于 2007-12-10 14:22

where is

whereis,&nbsp;顺便帮我看看这个问题:<br /><br />https://bbs.21ic.com/club/bbs/list.asp?boardid=40&page=1&t=2785172&tp=%u6C42%u52A9%3A%20Linux%u4E0BTimer%u7F16%u7A0B

db10 发表于 2007-12-10 17:57

rockos

&nbsp;应当首先向cross&nbsp;toolchain中加入ncurse库。<br /><br />&nbsp;怎么加?是下一个ncurse,直接安装?还是怎么搞的。

db10 发表于 2007-12-10 18:03

。。

下了个gdb5.2.1,编译通过,编译时的ldflags&nbsp;=&nbsp;-static使用静态。(没有根据rockos的做。他说的还俺不明白。)<br />&nbsp;下到板子上,可以开启gdbserver,在PC上也可以连上了。但是只能全速运行一次。设置断点后,在运行就出现:<br />&nbsp;warnning&nbsp;<br />&nbsp;Cannot&nbsp;insert&nbsp;breakpoint&nbsp;1.<br />&nbsp;&nbsp;Error&nbsp;accessing&nbsp;memory&nbsp;address&nbsp;0x8...<br />&nbsp;&nbsp;
页: [1]
查看完整版本: whereis