2014-01-08 114 views
3
[[email protected] ASM]# ls 
EXEC* file.sh* this.asm 
[[email protected] ASM]# ./EXEC 
bash: ./EXEC: No such file or directory 
[[email protected] ASM]# 

我有我编写了一个assemblyfile,它不认为这是一个实际的文件。不是我用[TAB]自动填充填写文件名。它检测到它,但它说:“没有这样的文件或目录”文件存在,但“没有这样的文件或目录”

这里是我使用的编译什么。 我有一个64位机和正在运行的32位汇编代码:

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

它显示了ls和Tab键的文件,但是当我按下回车键,就显示什么。

更新: 好的。当我不要通过ASM文件调用C函数,我可以编译和运行,没有错误,使用此:

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

如果不是二进制我d说它可能有一个不好的she-bang线,但是用二进制表示我没有想法。 – Alfe

+0

它,确实是一个二进制文件。我可以很好地执行shell脚本。我应该更新它,我可以执行它,如果我用不同的方式进行complile,但该程序不会允许我。 – Goodies

回答

2

看起来像一个动态链接程序的问题。试着用/usr/lib32执行它添加到动态链接路径:

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

如果不工作,你也许可以这样做:

/usr/lib32/ld-linux.so.2 --library-path /usr/lib32 ./EXEC 
相关问题