[Linux] Kann Programm nicht ausführen
-
Hallo,
ich habe da ein sehr seltsames Problem, bei dem ich nicht mehr weiter weiß.
Es gibt da ein Programm, dass ich gerne starten würde:$ ls -l -h ./lmgrd -rwxrwxrwx 1 me me 1012K 2010-07-12 09:11 ./lmgrd
Aber obwohl es eiondeutig vorhanden ist, wird es nicht gefunden, wenn ich es starten möchte:
$ ./lmgrd bash: ./lmgrd: No such file or directory
Ich verwende Ubuntu 10.04 LTS. Kann mir jemand helfen?
Vielen Dank im Voraus.
-
Gib mal die Ausgabe von
file lmgrd
unduname -a
(zensier ruhig, wenn dir die Ausgabe zu viel verrät). Mein Verdacht: lmgrd ist für eine andere Architektur als deine.
-
Entweder hast du dich vertippt oder die Datei heißt anders als du glaubst. Ein Leerzeichen am Ende des Dateinamens ist zum Beispiel eine gemeine Falle. "No such file or directory" ist eine Fehlermeldung, die kaum eindeutiger geht.
Deswegen nehm ich tab-completion, dann werden die Dateinamen immer korrekt.
-
Ich bin der Meinung, dass die Datei mittels #! versucht einen Interpreter für sich aufzurufen, den es auf deinem System nicht gibt. Einfach mal reingucken
-
YASC schrieb:
Ich bin der Meinung, dass die Datei mittels #! versucht einen Interpreter für sich aufzurufen, den es auf deinem System nicht gibt. Einfach mal reingucken
Nein, das kann nicht sein. Dann wäre die Fehlermeldung anders:
$ echo '#!/bin/foo' > foo $ chmod +x foo $ ./foo bash: ./foo: /bin/foo: bad interpreter: No such file or directory $
-
Dann bin ich wohl einfach nur alt :(. Früher war das genau die Fehlermeldung.
-
SeppJ schrieb:
Gib mal die Ausgabe von
file lmgrd
unduname -a
(zensier ruhig, wenn dir die Ausgabe zu viel verrät). Mein Verdacht: lmgrd ist für eine andere Architektur als deine.Bite sehr:
$ uname -a Linux PCName 2.6.32-33-generic-pae #71-Ubuntu SMP Wed Jul 20 18:46:41 UTC 2011 i686 GNU/Linux $ file ./lmgrd ./lmgrd: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped
Scheint in Ordnung zu sein.
Christoph schrieb:
Entweder hast du dich vertippt oder die Datei heißt anders als du glaubst. Ein Leerzeichen am Ende des Dateinamens ist zum Beispiel eine gemeine Falle. "No such file or directory" ist eine Fehlermeldung, die kaum eindeutiger geht.
Deswegen nehm ich tab-completion, dann werden die Dateinamen immer korrekt.
Das benutze ich ja immer. Schon allein, weil ich so faul bin.
Ich hab' da auch mal ein kleines Test-Programm geschreiben:
#include <stdio.h> #include <sys/stat.h> #include <sys/types.h> #include <unistd.h> int main() { const char *filename = "./lmgrd"; struct stat sb; if(stat(filename, &sb) == -1) perror("stat"); else printf("stat works.\n"); if(execl(filename, filename, (char*)NULL) == -1) perror("execl"); return 0; }
Ausgabe:
$ gcc test.c && ./a.out stat works. execl: No such file or directory
-
Kannst Du mal den Dateinamen direkt aus dem System in Hexadezimal anzeigen lassen? Also nicht irgendwo den Namen, so wie man glaubt wie er heißt in einen Unicode-Hexadezimal Konverter eingeben, sondern wirklich in dem System die Dateien auflisten lassen, so das auch die betreffende Datei dabei ist und dann dessen Namen z.B. einer Variable zuweisen und dann den Hexadezimalwert wiederum in Unicode darstellen. Wenn Du weißt was ich meine.
-
Das was die lmgrd macht, ist nicht zufällig diese Meldung auszugeben?
Kannst du mal
gdb lmgrd
machen und dannrun
tippen und sagen, was passiert? (gdb muss eventuell noch nachinstalliert werden)
-
anonymous
schrieb:
Kannst Du mal den Dateinamen direkt aus dem System in Hexadezimal anzeigen lassen? Also nicht irgendwo den Namen, so wie man glaubt wie er heißt in einen Unicode-Hexadezimal Konverter eingeben, sondern wirklich in dem System die Dateien auflisten lassen, so das auch die betreffende Datei dabei ist und dann dessen Namen z.B. einer Variable zuweisen und dann den Hexadezimalwert wiederum in Unicode darstellen. Wenn Du weißt was ich meine.
Wie mache ich das?
SeppJ schrieb:
Das was die lmgrd macht, ist nicht zufällig diese Meldung auszugeben?
Kannst du mal
gdb lmgrd
machen und dannrun
tippen und sagen, was passiert? (gdb muss eventuell noch nachinstalliert werden)Das habe ich auch schon versucht:
$ gdb ./lmgrd GNU gdb (GDB) 7.1-ubuntu Copyright (C) 2010 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "i486-linux-gnu". For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>... Reading symbols from /home/me/Linux_Licensing_Daemon/lmgrd...(no debugging symbols found)...done. (gdb) run Starting program: /home/me/Linux_Licensing_Daemon/lmgrd /bin/bash: /home/me/Linux_Licensing_Daemon/lmgrd: No such file or directory /bin/bash: /home/me/Linux_Licensing_Daemon/lmgrd: Success During startup program exited with code 1. (gdb)
Auch mit
strace
:$ strace ./lmgrd execve("./lmgrd", "./lmgrd", /* 20 vars */) = -1 ENOENT (No such file or directory) dup(2) = 3 fcntl64(3, F_GETFL) = 0x8002 (flags O_RDWR|O_LARGEFILE) fstat64(3, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb774f000 _llseek(3, 0, 0xbfc97148, SEEK_CUR) = -1 ESPIPE (Illegal seek) write(3, "strace: exec: No such file or di"..., 40strace: exec: No such file or directory ) = 40 close(3) = 0 munmap(0xb774f000, 4096) = 0 exit_group(1) = ?
-
Adlerschwinge schrieb:
anonymous
schrieb:
Kannst Du mal den Dateinamen direkt aus dem System in Hexadezimal anzeigen lassen? Also nicht irgendwo den Namen, so wie man glaubt wie er heißt in einen Unicode-Hexadezimal Konverter eingeben, sondern wirklich in dem System die Dateien auflisten lassen, so das auch die betreffende Datei dabei ist und dann dessen Namen z.B. einer Variable zuweisen und dann den Hexadezimalwert wiederum in Unicode darstellen. Wenn Du weißt was ich meine.
Wie mache ich das?
vielleicht meint er sowas:
hallo@welt:~ 52 > echo "hallo" | od -h
0000000 6168 6c6c 0a6f
0000006
-
ldd lmgrd
-
Jetzt wo ich den Pfad sehe und weiß, was das für ein Programm ist: Du bist noch nicht auf die Idee gekommen, einfach mal Google zu fragen?
Frage: Google: linux Licensing Daemon lmgrd no such file or directory
Antwort: http://idlastro.gsfc.nasa.gov/idl_html_help/License_Manager_Startup.html
-
SeppJ schrieb:
Jetzt wo ich den Pfad sehe und weiß, was das für ein Programm ist: Du bist noch nicht auf die Idee gekommen, einfach mal Google zu fragen?
http://idlastro.gsfc.nasa.gov/idl_html_help/License_Manager_Startup.html
Google: linux Licensing Daemon lmgrd no such file or directoryKein Grund sich so aufzuregen.
Typisch Moderatoren...
Die Installation von "lsb" hat geholfen.
-
Adlerschwinge schrieb:
Kein Grund sich so aufzuregen.
Typisch Moderatoren...
Getroffene Hunde...?
Mensch, habt euch lieb. War halt diesmal doof gelaufen, 's nächste Mal läufts besser.