Linksys WRVS4400N ürün yazılımını derlemeye çalışıyorum.
ls
var olduğunu gösterir ama koşmaya çalıştığında bash var olmadığını söyler. Ben de yapabilirim cat
ve bir kabuk komut dosyası değil, yürütülebilir bir dosyadır.
Linksys WRVS4400N ürün yazılımını derlemeye çalışıyorum.
ls
var olduğunu gösterir ama koşmaya çalıştığında bash var olmadığını söyler. Ben de yapabilirim cat
ve bir kabuk komut dosyası değil, yürütülebilir bir dosyadır.
Yanıtlar:
Çıktı çıktı file mkdep
olduğunu söyledi 32-bit elf
. 64 bit VM çalıştırıyorsunuz.
Misal:
$ 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
Sadece yeni bir 32-bit VM yapın ve orada derleyin.
Yürütülebilir olarak ayarlanmış mı? Değilse, o zaman chmod +x filename
. PATH'ınızda mı? Değilse, ./filename
sadece değil de arayın filename
.
Bir dosyayı yürütmeye çalıştığınızda ve bash bunun olmadığını söylüyor, bazen bash dosyasının bir komut dosyası olduğuna ve ilk satırda (#!) Belirtilen yorumlayıcının mevcut olmadığına inanıyor demektir.
Dosyalar isimlendirilmişse mkdep
, çıktısını
./mkdep
file mkdep
hd mkdep | head
strace ./mkdep 2>mkdep.strace.txt
Strace komutu, yapılan sistem çağrıları hakkında bilgi verir, örneğin strace ls 2>ls.t
aşağıdakileri ls.t'ye koyar
yürütmek ("/ bin / ls", ["ls"], [/ * 22 vars * /]) = 0 brk (0) = 0x8061000 access ("/ etc / ld.so.nohwcap", F_OK) = -1 ENOENT (Böyle bir dosya veya dizin yok) mmap2 (NULL, 8192, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0) = 0xb7f82000 access ("/ etc / ld.so.preload", R_OK) = -1 ENOENT (Böyle bir dosya veya dizin yok) 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 kapat (3) = 0 access ("/ etc / ld.so.nohwcap", F_OK) = -1 ENOENT (Böyle bir dosya veya dizin yok) open ("/ lib / librt.so.1", O_RDONLY) = 3 oku (3, "\ 177ELF \ 1 \ 1 \ 1 \ 0 \ 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
strace ./mkdep 2>mkdep.strace.txt
için neler olup bittiğine dair bir fikir vermelisin. Depolardan şerit yüklemeniz gerekebilir.
Senaryonuzdaki IFS'yi değiştiriyor musunuz? Ben de benim komut dosyalarından birinde aynı sorunla karşılaştı ve aynı düşündüm (32 bit dosya 64 bit makinede kabuk komut dosyası tarafından okunuyor). Ama benim durumumda sorun bu değildi. Bunun yerine, IFS'yi virgül ',' olarak değiştiriyordum ve ayrıştırıcıyı bir şekilde karıştırıp bu hataya neden olan yeni bir satıra geri dönüyordum.
Ben sadece IFS herhangi bir değişiklik kaldırıldı ve şimdi gayet iyi çalışıyor !!!