【发布时间】:2011-07-11 04:24:17
【问题描述】:
我认识的人在运行“lmutil”时遇到了问题,所以我让他们去strace -f lmutil。为什么execve 以“没有这样的文件”失败!!!这是没有意义的,因为我正在跟踪同一个文件!这到底是怎么回事???
strace -f /home/tabitha/Starprogram/FLEXlm_11.7/linux-x86_64-2.3.4/bin/lmutil
输出:
execve("/home/tabitha/Starprogram/FLEXlm_11.7/linux-x86_64-2.3.4/bin/lmutil", ["/home/tabitha/Starprogram/FLEXlm"...], [/* 38 vars */]) = -1 ENOENT (No such file or directory)
dup(2) = 3
fcntl(3, F_GETFL) = 0x8002 (flags O_RDWR|O_LARGEFILE)
fstat(3, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 1), ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd7cb8b0000
lseek(3, 0, SEEK_CUR) = -1 ESPIPE (Illegal seek)
write(3, "strace: exec: No such file or di"..., 40strace: exec: No such file or directory
) = 40
close(3) = 0
munmap(0x7fd7cb8b0000, 4096) = 0
exit_group(1) = ?
ldd 输出
$ ldd ./lmutil linux-vdso.so.1 => (0x00007fffcd5ff000) libpthread.so.0 => /lib/libpthread.so.0 (0x00007fe40ebbe000) libm.so.6 => /lib/libm.so.6 (0x00007fe40e93b000) libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00007fe40e724000) libc.so.6 => /lib/libc.so.6 (0x00007fe40e3a1000) libdl.so.2 => /lib/libdl.so.2 (0x00007fe40e19d000) /lib64/ld-lsb-x86-64.so.3 => /lib64/ld-linux-x86-64.so.2 (0x00007fe40edf5000) $查找。 -name lmutil -exec 文件 {} \; ./bin.linux.x86_64/lmutil:ELF 64 位 LSB 可执行文件,AMD x86-64,版本 1 (SYSV),适用于 GNU/Linux 2.4.0,动态链接(使用共享库),适用于 GNU/Linux 2.4。 0,剥离 ./bin.linux.x86/lmutil:ELF 32 位 LSB 可执行文件,Intel 80386,版本 1 (SYSV),适用于 GNU/Linux 2.2.5,动态链接(使用共享库),适用于 GNU/Linux 2.2.5,剥离 ./lmutil:Bourne shell 脚本文本可执行文件【问题讨论】:
-
可以肯定的是,
ldd的输出是针对…/linux-x86_64-2.3.4/bin/lmutil的,对吧?这是什么操作系统(对于 Linux:什么发行版),什么版本,什么架构? -
好吧..我不确定,现在他们正在尝试使用 CentOS (Qemu).. 操作系统是 Linux,AMD 上的 Ubuntu 最新版本(但我不确定)无论如何,我告诉他们仔细检查架构(32 位与 64 位、intel/amd/sparc、linux/fbsd)以确保不是问题。
-
为了清楚起见,我只想知道为什么 strace 会给出那个错误(找不到文件).. 并不真正关心修复用户问题(让 lmutil 执行)。 *** 也忽略“find . -name lmutil -exec file {} \; 和相关输出。为此道歉!显然该命令不是由用户运行的。希望我可以编辑它,但我没有;t知道如何*****
-
如果你没有写
lmutil,这不是一个与编程相关的问题,在这种情况下,这里是题外话,我建议请求迁移到Unix Stack Exchange。