【问题标题】:File Exists, but "No Such file Or Directory"文件存在,但“没有这样的文件或目录”
【发布时间】:2014-01-08 09:46:06
【问题描述】:
[root@GoodiesArch ASM]# ls
EXEC*  file.sh*  this.asm
[root@GoodiesArch ASM]# ./EXEC 
bash: ./EXEC: No such file or directory
[root@GoodiesArch ASM]# 

我有一个我编译的程序集文件,但它没有将其视为实际文件。并不是说我使用 [TAB] 自动填充来填写文件名。它检测到它,但它说“没有这样的文件或目录”

这是我用来编译它的。 我有一台 x64 位机器并且正在运行 32 位 asm 代码:​​

nasm -f elf32 -o tmp.o this.asm
ld -s -lc -L /usr/lib32/ -m elf_i386 -o EXEC tmp.o

它在ls 和tab 中显示文件,但是当我按Enter 时,它什么也没显示。

更新: 好的。当我不通过 ASM 文件调用 C 函数时,我可以编译它并运行,没有错误,使用这个:

nasm -f elf32 -o tmp.o this.asm
ld -s -m elf_i386 -o EXEC tmp.o

【问题讨论】:

  • 如果它不是一个二进制文件,我会说它可能有一个糟糕的 she-bang 行,但是对于一个二进制文件我没有想法。
  • 它确实是一个二进制文件。我可以很好地执行 shell 脚本。我应该更新它,如果我以不同的方式编译它,我可以执行它,但程序不允许我这样做。

标签: linux file assembly nasm


【解决方案1】:

看起来像一个动态链接器问题。尝试在动态链接路径中添加/usr/lib32 来执行它:

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib32 ./EXEC

如果这不起作用,您可以执行以下操作:

/usr/lib32/ld-linux.so.2 --library-path /usr/lib32 ./EXEC

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多