![运行自定义编译的可执行文件返回“没有这样的文件或目录”](https://linux22.com/image/11843/%E8%BF%90%E8%A1%8C%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BC%96%E8%AF%91%E7%9A%84%E5%8F%AF%E6%89%A7%E8%A1%8C%E6%96%87%E4%BB%B6%E8%BF%94%E5%9B%9E%E2%80%9C%E6%B2%A1%E6%9C%89%E8%BF%99%E6%A0%B7%E7%9A%84%E6%96%87%E4%BB%B6%E6%88%96%E7%9B%AE%E5%BD%95%E2%80%9D.png)
我有一个可执行文件,但是当我运行它时,我得到“没有这样的文件或目录”
$ chmod a+x bin
$ file bin
bin: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib/ld64.so.1, not stripped
$ ./bin
bash: ./bin: No such file or directory
请注意,该可执行文件实际上是 ELF 64 位,操作系统也是如此。
答案1
-dynamic-linker
这是因为我忘记在调用中包含选项ld
-dynamic-linker /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
如此称呼它,
ld -m elf_x86_64 -dynamic-linker /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 -o bin
使它工作正常。
有关 32 位/64 位不匹配的类似问题的更多信息,请参阅这个问题