Hi, hab grad unter Ubuntu ein einfaches cprog mit arm-linux-gcc-3.4.1 erstellt und dieses auf einen µC mit embedded Linux portiert und wollte es dort ausführen ./test.o datei -> allerdings bekamm ich immer die Fehlermeldung -sh ./test.o not found... Kann man jmd auf die Sprünge helfen, warum diese Datei (die auf jeden Fall da ist und auch die entsprechenden Rechte chmod 777 besitzt) als nicht vorhanden deklariert wird? Gruß Bernd
> -sh ./test.o not found
Was für ein Format hat test.o denn? Das hört sich so verdächtig nach
Objektdatei an (also nicht ausführbar gelinkt).
HTH
Hallo! Dass eine nicht ausführbare Datei unter einem embedded Linux als 'not found' tituliert wird, habe ich auch schon mal erlebt. Als Tipp würd ich mal sagen, eine .o Datei ist üblicherweise eine Objektdatei, die nicht gelinkt und deswegen so nicht lauffähig ist. Zum Ausführen brauchst du z.B. eine ELF-Binary. Gruß David
test.o klingt nicht nach einer ausführbaren Datei. Was sagt "file test.o"? Wie hast Du die Datei kompiliert? Gibt es auch eine Datei namens "test"? Gruß, Falk
Richtig, *.o sind Objektdateilen, die aus dem Compiler fallen und vom Linker zu einer ausführbaren Datei zusammengelinkt werden.
> Richtig, *.o sind Objektdateilen, die aus dem Compiler fallen und vom > Linker zu einer ausführbaren Datei zusammengelinkt werden. Da fehlt ein "in der Regel, Klarheit liefert 'file'" </klugsch****> Einfachst nachvollziehbares Gegenbeispiel: $ echo 'int main() { return 0; }' > test.c ; echo ; gcc -Wall test.c -o test.o ; file test.o ; rm test.o ; echo ; gcc -Wall test.c -c -o test.o ; file test.o test.o: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, not stripped test.o: ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), not stripped Ersteres ist ausführbar (hier: amd64, auf anderen Architekturen analog), zweiteres (nur) eine Objektdatei - der Dateiname ist völlig unerheblich :-)
gelinkt bzw. erstellt habe ich Datei so: arm-linux-gccc-3.4.1 -o text.o text.c -> wie kann ich daraus eine .elf Datei erzeugen? oder reicht es wenn ich arm-linux-gccc-3.4.1 test.c -Wall -o test schreibe? Bernd
btw: kann es auch probleme geben, wenn die Kernel nicht genau übereinstimmen? Linux 2.6 und Linx 2.4 z.B?
> btw: kann es auch probleme geben, wenn die Kernel nicht genau > übereinstimmen? Linux 2.6 und Linx 2.4 z.B? Dein Crosscompiler (bzw. die binutils und die libraries) sollten zum Zielsystem passen, der Rest ist (weitgehend) egal. Machmal ein 'file test.o', nur so wirst Du rausbekommen, was es tatsächlich ist. Falls es executable ist (und zum Zielstem passt), dann sollte es dort auch ausführbar sein, dann müsstest du dort weitersuchen. HTH
Gast (Gast) schrieb:
> Einfachst nachvollziehbares Gegenbeispiel:
Ich gehe mal davon aus, dass er nicht mutwillig Unsinn getrieben hat.
> Fehlermeldung -sh ./test.o not found...
Entweder ist test.o keine Executable (was sagt "file test.o"?)
oder
es fehlen shared objects (was sagt "ldd test.o"?)
oder
du hast das falsche Terminal erwischt (biste auf der richtigen Kiste?;)
Gruss
./t
ausprobieren kann ich es erst morgn wieder: aber erstellt wurde das file auf einem ubuntu server system und laufen soll es auf einem embedded linux 2.6 kernel (arm controller). ./test.o ist auf jeden Fall auf dem Unbuntu System ausführbar bzw. das c-Prog wird gestartet und auch ausgeführt. Gruß Bernd
file test.o liefert auf Ubuntu: test.o: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.4.3, not stripped und ldd test.o liefert: "not a dynamic executable" wo müsste ich jetzt weiterschauen um das Problem zu finden bzw. zu lösen? Gruß Bernd
muss auf dem embedded linux auch irgendwas installiert sein, damit es funktionieren kann (z.B: eine Version von gcc)??? Bernd
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.