2014-01-08 2 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]# 

У меня есть сборщик, который я скомпилировал, и он не видит его в качестве фактического файла. Не то, чтобы я использовал автозаполнение [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 и табуляции, но когда я ударил войти, он ничего не показывает.

Обновление: Хорошо. Когда я НЕ вызывать функции C с помощью файла ASM, я могу скомпилировать и запустить, без ошибок, с помощью этого:

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

Если это не бинарное я d сказать, что у него может быть плохая линия «она-банг», но с двоичным кодом у меня нет идей. – Alfe

+0

Это, действительно, двоичный файл. Я могу выполнить сценарий оболочки отлично. Я должен обновить его, чтобы его можно было выполнить, если я усложняю его по-другому, но программа мне не позволит. – Goodies

ответ

2

Похоже, динамический вопрос линкера. Попробуйте выполнить его с /usr/lib32 добавляется к динамическому пути ссылка:

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

Если это не работает, вы можете быть в состоянии сделать что-то вроде:

/usr/lib32/ld-linux.so.2 --library-path /usr/lib32 ./EXEC 
Смежные вопросы