"Nicht gefunden? Wieso nicht gefunden, liegt doch da!"

06/04/2008 - 17:37 von Marian Aldenhövel | Report spam
Hallo,

Ich spiele mit T2 um ein "quasi-embeddedes" System zusammenzustellen. In
dem Zusammenhang bin ich auf ein komisches Ràtsel gestoßen.

Ich habe ein Programm hello, das ich aus einem einfachsten C-Source gebaut
habe. Und ein Programm bb, das im Rahmen eines komplexen Builds aus einem
anderen Compiler geschlüpft ist.

Beide liegen in einem Verzeichnis:


root@kboxdev:/home/kbox/t2/target/kbox/hello# ls -l
total 1164
-rwxr-xr-x 1 root root 629896 2008-04-06 08:48 bb
-rwxr-xr-x 1 root root 547444 2008-04-04 15:29 hello



hello làuft:


root@kboxdev:/home/kbox/t2/target/kbox/hello# ./hello
Hello world!



bb nicht:


root@kboxdev:/home/kbox/t2/target/kbox/hello# ./bb
-bash: ./bb: No such file or directory



Öh. Na schauen wir mal, was da genau drin ist:


root@kboxdev:/home/kbox/t2/target/kbox/hello# file hello bb
hello: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for


GNU/Linux 2.6.8, statically linked, not stripped

bb: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV),


dynamically linked (uses shared libs), stripped

OK. Ich wàre ja einverstanden wenn bb wegen des Fehlens oder falscher shared
libs nicht startete, aber "So such file or directory" will ich so nicht
hinnehmen.


root@kboxdev:/home/kbox/t2/target/kbox/hello# strace ./hello
execve("./hello", ["./hello"], [/* 18 vars */]) = 0
uname({sys="Linux", node="kboxdev", ...}) = 0
..



Und:


root@kboxdev:/home/kbox/t2/target/kbox/hello# strace ./bb
execve("./bb", ["./bb"], [/* 18 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|0600, st_rdev=makedev(136, 1), ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =


0xb7fca000

_llseek(3, 0, 0xbfcd9fe8, 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(0xb7fca000, 4096) = 0
exit_group(1) = ?
Process 20530 detached



Kann mir einer erklàren wieso ./hello gefunden wird, aber ./bb nicht?

Ciao, MM
Marian Aldenhövel, Rosenhain 23, 53123 Bonn
http://www.marian-aldenhoevel.de
"Success is the happy feeling you get between the time you
do something and the time you tell a woman what you did."
 

Lesen sie die antworten

#1 Christian Zietz
06/04/2008 - 17:52 | Warnen spam
Marian Aldenhövel schrieb:

> :/home/kbox/t2/target/kbox/hello# strace ./bb
> execve("./bb", ["./bb"], [/* 18 vars */]) = -1 ENOENT (No such file or
directory)



Aus "man execve": "ENOENT: The file filename or a script or ELF
interpreter does not exist, or a shared library needed for file or
interpreter cannot be found."

Was sagt denn "ldd ./bb"?

CU Christian
Christian Zietz - CHZ-Soft - czietz (at) gmx.net
WWW: http://www.chzsoft.com.ar/
PGP/GnuPG-Key-ID: 0x6DA025CA

Ähnliche fragen