gpt4 book ai didi

linux - 交叉 gdb : fix a mismatch between libthread_db and libpthread

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:07:49 24 4
gpt4 key购买 nike

我有一个配置了 --host=i686-pc-linux-gnu --target=powerpc-e300c3-linux-gnu 的 cross-gdb。我可以使用 gdbserver 在远程板上正确调试应用程序,但我收到有关 libthread_dblibpthread 之间版本不匹配的错误,所以我不能正确调试线程(gdb 只识别一个线程而不是三个线程)。可能是因为 libc 的版本不同:在主机上我有 libc2.15 而在目标机器上有 lib2.5。我试图为主机重建 libc2.5 以便将 gdb 链接到它,但这是一个 hell 。在我疯狂地重建它之前,有人可以确认这是一个 libc 问题吗?

最佳答案

I tried to rebuid libc2.5 for host in order to link gdb against to it

这不是你需要的。

您需要的是让 gdb 找到并加载与您的目标 libpthread.so.0 匹配的 libthread_db.so.1

为此,你需要

  1. 为主机构建libc-2.5,以及
  2. 设置 GDB 的 libthread-db-search-path,使其找到在步骤 1 中构建的 libthread_db.so.1

您实际上不需要在步骤 1 中构建整个 libc。像这样的东西就足够了:

mkdir build && cd build
../configure --prefix=/usr
make -C ../nptl_db objdir=`pwd`

更新:

i have GDB 6.6 and there isn't libthread-db-search-path. What is another way to specify that path?

GDB 只会dlopen("libthread_db.so.1", ...)。所以要让它找到正确的libthread_db.so.1,您需要调整LD_LIBRARY_PATH。使用庆典:

LD_LIBRARY_PATH=/tmp/glibc-2.5/build/nptl_db gdb /path/to/target/a.out

关于linux - 交叉 gdb : fix a mismatch between libthread_db and libpthread,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11016598/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com