【发布时间】:2014-08-20 06:08:05
【问题描述】:
所以我遇到了一个严重的问题,即从foundry27(qnx 软件站点)下载的gdb 的qnx 版本需要libpthread.so.1:
qnx:/root/# gdb
ldd:FATAL: Could not load library libpthread.so.1
现在这对我来说很有趣,因为根据here 和我自己过去的经验,QNX 中没有 pthread 共享库,pthread 内容是 libc 的一部分。
我知道这是一个很长的镜头,但以前有人遇到过吗?
编辑:
qnx:/root/# uname -a
QNX qnx 6.5.0 2010/07/09-14:44:03EDT x86pc x86
我尝试从这里下载 qnx: http://community.qnx.com/sf/frs/do/viewRelease/projects.toolchain/frs.gdb.gdb_7_6_r863
我得到了nto-gdb版本,因为选项如下:
gdb-prereq-linux.tgz
gdb-prereq-win32.tgz
linux-gdb-7.6.tar.gz
win32-gdb-7.6.zip
nto-arm-gdb-7.6.tar.gz
nto-gdb-7.6.tar.gz
GDB 信息
ls -l $(which -a gdb)
lrwxrwxrwx 1 501 501 10 Jul 09 14:21 /usr/qnx650/host/qnx6/x86/usr/bin/gdb -> ntox86-gdb
GDB 调试信息
libs: load_object: attempt load of libpthread.so.1
debug: find_file:1151: name=libpthread.so.1 libpath=:/root/SMG/extern/libs/opendds/OpenDDS_ACE_TAO/ACE_wrappers/lib:/root/SMG/extern/libs/opendds/OpenDDS_ACE_TAO/DDS/lib:/usr/local/lib rpath=/usr/pkg/lib
debug: searchpath:1095: name=libpthread.so.1 path=/usr/pkg/lib amode=4 bufsize=1025
debug: searchpath:1119: trying /usr/pkg/lib/libpthread.so.1
debug: searchpath:1130:/usr/pkg/lib/libpthread.so.1: failed (No such file or directory)
debug: searchpath:1095: name=libpthread.so.1 path=:/root/SMG/extern/libs/opendds/OpenDDS_ACE_TAO/ACE_wrappers/lib:/root/SMG/extern/libs/opendds/OpenDDS_ACE_TAO/DDS/lib:/usr/local/lib amode=4 bufsize=1025
debug: searchpath:1119: trying libpthread.so.1
debug: searchpath:1130:libpthread.so.1: failed (No such file or directory)
debug: searchpath:1119: trying /root/SMG/extern/libs/opendds/OpenDDS_ACE_TAO/ACE_wrappers/lib/libpthread.so.1
debug: searchpath:1130:/root/SMG/extern/libs/opendds/OpenDDS_ACE_TAO/ACE_wrappers/lib/libpthread.so.1: failed (No such file or directory)
debug: searchpath:1119: trying /root/SMG/extern/libs/opendds/OpenDDS_ACE_TAO/DDS/lib/libpthread.so.1
debug: searchpath:1130:/root/SMG/extern/libs/opendds/OpenDDS_ACE_TAO/DDS/lib/libpthread.so.1: failed (No such file or directory)
debug: searchpath:1119: trying /usr/local/lib/libpthread.so.1
debug: searchpath:1130:/usr/local/lib/libpthread.so.1: failed (No such file or directory)
debug: searchpath:1095: name=libpthread.so.1 path=/proc/boot:/lib:/usr/lib:/lib/dll:/opt/lib amode=4 bufsize=1025
debug: searchpath:1119: trying /proc/boot/libpthread.so.1
debug: searchpath:1130:/proc/boot/libpthread.so.1: failed (No such file or directory)
debug: searchpath:1119: trying /lib/libpthread.so.1
debug: searchpath:1130:/lib/libpthread.so.1: failed (No such file or directory)
debug: searchpath:1119: trying /usr/lib/libpthread.so.1
debug: searchpath:1130:/usr/lib/libpthread.so.1: failed (No such file or directory)
debug: searchpath:1119: trying /lib/dll/libpthread.so.1
debug: searchpath:1130:/lib/dll/libpthread.so.1: failed (No such file or directory)
debug: searchpath:1119: trying /opt/lib/libpthread.so.1
debug: searchpath:1130:/opt/lib/libpthread.so.1: failed (No such file or directory)
debug: ldd:find_file:1175:libpthread.so.1: search failed
ldd:FATAL: Could not load library libpthread.so.1
【问题讨论】:
-
是的,pthread 内容是 QNX 中 libc 的一部分。但是您并不想在 QNX 主机上运行 gdb,对吗? (您的提示确实是“qnx:”)如果尝试在 QNX 上运行,那么下一个问题是您是否正在运行为 QNX 构建的 gdb 版本(而不是,例如,用于 Linux)您能否更新您的问题在您尝试运行 gdb 的主机上输出“uname -a”,以及您从 F27 中提取的 gdb 存档的完整链接(不想猜测您可能是在那里发布的几个版本中的哪一个)使用)。
-
@maverick 感谢您的回复,已添加额外信息。
-
谢谢; uname -a 的输出更可取,因为它也提供了架构(我假设您使用的是 x86)。请再添加两个测试: 1. "ls -l $(which -a gdb)" 的输出(查看 gdb 到底是什么符号链接,以及目标上是否有多个 gdb-s); 2.尝试使用“DL_DEBUG=all gdb”运行gdb;这将输出大量的库解析信息,并可能提示它为什么要尝试查找 libpthread.so.1。 (我从链接下载的 ntox86-gdb 二进制文件不包含对 libpthread.so.1 的任何引用,因此它可能是通过另一个库引入的。)
-
@maverick,添加了该信息
-
嗨,本,这并没有透露太多。您是否截断了日志的开头?我希望在开始寻找 libpthread.so.1 之前会有一些提示。如果您的日志实际上比您发布的更长,那么您能否在开头添加更多上下文?您还可以运行“use -i gdb”并粘贴结果吗?这将确保我们正在查看相同的二进制文件。