Я пытаюсь скомпилировать прошивку для моего linksys WRVS4400N.
ls
показывает, что существует, но когда он пытается запустить его, bash говорит, что его не существует. Я могу также cat
это, и это исполняемый файл, а не сценарий оболочки.
Я пытаюсь скомпилировать прошивку для моего linksys WRVS4400N.
ls
показывает, что существует, но когда он пытается запустить его, bash говорит, что его не существует. Я могу также cat
это, и это исполняемый файл, а не сценарий оболочки.
Вы упомянули, что вывод file mkdep
- 32-bit elf
. Вы используете 64-битную виртуальную машину.
Пример:
$ uname -m
x86_64
$ ls -l ./example
-rwxr-xr-x 1 root root 92312 2011-08-18 16:52 ./example
$ file ./example
example: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped
$ ./example
-bash: ./example: No such file or directory
Просто создайте новую 32-битную виртуальную машину и скомпилируйте ее там.
Это установлено, чтобы быть исполняемым? Если нет, то chmod +x filename
. Это в вашем ПУТИ? Если нет, то назовите его как ./filename
а не просто filename
.
Когда вы пытаетесь выполнить файл, а bash говорит, что он не существует, иногда это означает, что bash считает, что файл является сценарием, а интерпретатор указан в первой строке (#!) не существует.
Если файлы с именем mkdep
я бы опубликовал вывод
./mkdep
file mkdep
hd mkdep | head
strace ./mkdep 2>mkdep.strace.txt
Команда strace выдает информацию о выполненных системных вызовах, например, strace ls 2>ls.t
помещает следующее в ls.t
execve("/bin/ls", ["ls"], [/* 22 vars */]) = 0 brk(0) = 0x8061000 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f82000 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) open("/etc/ld.so.cache", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=32311, ...}) = 0 mmap2(NULL, 32311, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f7a000 close(3) = 0 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/lib/librt.so.1", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\240\30\0\0004\0\0\0"..., 512) =512 fstat64(3, {st_mode=S_IFREG|0644, st_size=30624, ...}) = 0
Вы меняете IFS в своем сценарии? Я тоже столкнулся с той же проблемой в одном из моих сценариев и думал так же (32-битный файл читается сценарием оболочки на 64-битной машине). Но это не проблема в моем случае. Вместо этого я менял IFS на запятую ',' и возвращался к новой строке, которая как-то сбивала с толку синтаксический анализатор и вызывала эту ошибку.
Я только что удалил все изменения в IFS, и теперь он работает просто отлично !!!