gpt4 book ai didi

linux - 内核不保证编译文件的向后兼容性吗?

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

简要说明:Linux 内核 2.6.32 编译的可执行文件是否与 Linux 内核 2.6.24 内核不兼容?

我有一个在 linux 2.6.32 内核的系统中编译的可执行文件。我将编译后的文件转移到linux 2.6.24系统,执行时出现如下错误:

bremm@bezier:/tmp/deployed$ ./qt-workstation
bash: ./qt-workstation: Arquivo ou diretório não encontrado

文本的意思是“找不到文件或目录”,但文件存在。 strace 的输出:

execve("./qt-workstation", ["./qt-workstation"], [/* 46 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, 2), ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f78e84f5000
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(0x7f78e84f5000, 4096) = 0
exit_group(1) = ?

最佳答案

我猜这与动态链接有关。我相信我已经从无法找到 ld.so 或 ld-linux.so 或类似文件的已编译可执行文件中看到这样的错误。

对于 #!'d 脚本,当找不到 #!'d 解释器时会发生这种情况 - 包括当脚本从 Windows 传输并且在路径名末尾有一个 control-M 时。

更新

运行 strings ./qt-workstation | head 我发现我的 ld-linux.so 被硬编码为 /lib/ld-linux-x86-64.so.2 (命令的第一个输出),在Ubuntu 这个文件位于别处。

创建 /lib/ld-linux-x86-64.so.2 的符号可以解决问题。

关于linux - 内核不保证编译文件的向后兼容性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10216276/

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