Próbuję skompilować oprogramowanie wewnętrzne dla mojego linksys WRVS4400N.
ls
pokazuje, że istnieje, ale gdy próbuje go uruchomić, bash mówi, że nie istnieje. Mogę to cat
zrobić i jest to plik wykonywalny, a nie skrypt powłoki.
bash
arch-linux
Avery3R
źródło
źródło
Odpowiedzi:
Wspomniałeś, że wynikiem
file mkdep
jest32-bit elf
. Używasz 64-bitowej maszyny wirtualnej.Przykład:
Utwórz nową 32-bitową maszynę wirtualną i tam ją skompiluj.
źródło
Czy jest ustawiony na wykonywalność? Jeśli nie, to wtedy
chmod +x filename
. Czy to jest w twojej ŚCIEŻCE? Jeśli nie, to nazwij to./filename
raczej niż po prostufilename
.źródło
Kiedy próbujesz uruchomić plik i bash mówi, że on nie istnieje, czasami oznacza to, że bash wierzy, że plik jest skryptem i że interpreter określony w pierwszym wierszu (#!) Nie istnieje.
Jeśli pliki zostaną nazwane
mkdep
, opublikowałbym dane wyjściowePolecenie strace podaje informacje o wykonanych wywołaniach systemowych, na przykład
strace ls 2>ls.t
umieszcza następujące polecenie w ls.tźródło
strace ./mkdep 2>mkdep.strace.txt
to dać ci pojęcie o tym, co się dzieje. Być może trzeba zainstalować strace z repozytoriów.Zmieniasz IFS w swoim skrypcie? Ja też napotkałem ten sam problem w jednym ze swoich skryptów i pomyślałem tak samo (plik 32-bitowy jest odczytywany przez skrypt powłoki na 64-bitowej maszynie). Ale to nie był problem w moim przypadku. Zamiast tego zmieniłem IFS na przecinek i wróciłem do nowej linii, która jakoś pomieszała parser i spowodowała ten błąd.
Właśnie usunąłem wszelkie zmiany w IFS i teraz działa dobrze !!!
źródło