打印

whereis

[复制链接]
2168|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
db10|  楼主 | 2007-12-6 18:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
 这几天在编译gdb+gdbserver, 要么是编译错误,要么是编译好gdbserver后,下到at91rm9200板子上不能用。目前用得是gdb6.0,编译器有gcc2.95.3,也用过3.3.2。linux是2.4的。
  编译时开始编译gdb还可以通过,第二次make编译gdbserver有连接重定位错误(不是语法得问题能搞定的)。
  你这方面怎么样?哪个版本得源gdb和配合得比较好,你用哪个版本?你有比较好得编译和使用资料吗?

相关帖子

沙发
db10|  楼主 | 2007-12-6 18:33 | 只看该作者

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

[root@AT91RM9200DK /usr]$gdbserver: error in loading shared libraries: libthread
_db.so.1: cannot open shared object file: No such file or directory

当然我也不知道他这个gdbserver和库是好,还是针对什么的,我下了个我机子上的libthread_db-1.0.so也不行。
 我发现我机子上这样的库有好几个,在每个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
/usr/local/arm/3.4.1/arm-linux/lib/libthread_db.so -> libthread_db.so.1
/usr/local/arm/3.4.1/arm-linux/lib/libthread_db.so.1 -> libthread_db-1.0.so

libthread_db.so.1 is symbol link,你手动link一下。

gdbserver,暂时没整过,later。

使用特权

评论回复
地板
whereis| | 2007-12-6 20:09 | 只看该作者

.

pc的应该是对应x86体系的。
你的交叉编译器的库,才是对应arm的。
2.95.3和3.3.2,肯定不能随便混用的,否则绝对会出现“XXX undefined",这种问题遇到太多了。

=====================================================================
我发现我机子上这样的库有好几个,在每个gcc编译器下有一个,如2.95.3和3.3.2下,还有PC的linux也有一个,应该一样吗?

使用特权

评论回复
5
db10|  楼主 | 2007-12-6 23:41 | 只看该作者

ftp下了两个新的gdbserver源码

 明天再编译试试。

 /usr/local/arm/3.4.1/arm-linux/lib/libthread_db-1.0.so
/usr/local/arm/3.4.1/arm-linux/lib/libthread_db.so -> libthread_db.so.1
/usr/local/arm/3.4.1/arm-linux/lib/libthread_db.so.1 -> libthread_db-1.0. 

这个我之前试过了。

使用特权

评论回复
6
db10|  楼主 | 2007-12-8 00:40 | 只看该作者

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

 在板子上打gdbserver :2345 程序后:
ld-linux-2.1.3 连接有问题 libc.so.6

使用特权

评论回复
7
whereis| | 2007-12-8 10:11 | 只看该作者

.

libc.so.6也是链接

/usr/local/arm/3.4.1/arm-linux/lib/libc.so
/usr/local/arm/3.4.1/arm-linux/lib/libc.so.6 -> libc-2.3.2.so
/usr/local/arm/3.4.1/arm-linux/lib/libc-2.3.2.so           
/usr/local/arm/3.4.1/arm-linux/lib/libc.a

/usr/local/arm/3.4.1/arm-linux/lib/ld-2.3.2.so
/usr/local/arm/3.4.1/arm-linux/lib/ld-linux.so.2 -> ld-2.3.2.so

使用特权

评论回复
8
db10|  楼主 | 2007-12-9 14:29 | 只看该作者

是得 都是连接问题

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


使用特权

评论回复
9
db10|  楼主 | 2007-12-9 15:19 | 只看该作者

。。。

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

使用特权

评论回复
10
db10|  楼主 | 2007-12-9 15:45 | 只看该作者

whereis

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

使用特权

评论回复
11
rockos| | 2007-12-9 17:31 | 只看该作者

.

whereis被咬上了

使用特权

评论回复
12
db10|  楼主 | 2007-12-9 21:46 | 只看该作者

rockos

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

使用特权

评论回复
13
db10|  楼主 | 2007-12-10 12:21 | 只看该作者

....

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

使用特权

评论回复
14
rockos| | 2007-12-10 14:21 | 只看该作者

re

gdb和gdb server在gdb软件包中都有, 你在编译前, 应当首先向cross toolchain中加入ncurse库, 或者旧的terminfo库也行

我用gcc-3.4.6编译gdb-6.6, 很好用

使用特权

评论回复
15
rockos| | 2007-12-10 14:22 | 只看该作者

where is

whereis, 顺便帮我看看这个问题:

https://bbs.21ic.com/club/bbs/list.asp?boardid=40&page=1&t=2785172&tp=%u6C42%u52A9%3A%20Linux%u4E0BTimer%u7F16%u7A0B

使用特权

评论回复
16
db10|  楼主 | 2007-12-10 17:57 | 只看该作者

rockos

 应当首先向cross toolchain中加入ncurse库。

 怎么加?是下一个ncurse,直接安装?还是怎么搞的。

使用特权

评论回复
17
db10|  楼主 | 2007-12-10 18:03 | 只看该作者

。。

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

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

77

主题

2230

帖子

0

粉丝