www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Ubuntu test.o file not found


Autor: Bernd Schuster (mms)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Gast (Gast) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> -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

Autor: David Madl (md2k7)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Gastino G. (gastino)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Richtig, *.o sind Objektdateilen, die aus dem Compiler fallen und vom 
Linker zu einer ausführbaren Datei zusammengelinkt werden.

Autor: Gast (Gast) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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 
:-)

Autor: Bernd Schuster (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Bernd Schuster (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
btw: kann es auch probleme geben, wenn die Kernel nicht genau 
übereinstimmen? Linux 2.6 und Linx 2.4 z.B?

Autor: Gast (Gast) (Gast) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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

Autor: Gastino G. (gastino)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gast (Gast) schrieb:
> Einfachst nachvollziehbares Gegenbeispiel:

Ich gehe mal davon aus, dass er nicht mutwillig Unsinn getrieben hat.

Autor: tomm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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

Autor: Bernd Schuster (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Bernd Schuster (mms)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Bernd Schuster (mms)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
muss auf dem embedded linux auch irgendwas installiert sein, damit es 
funktionieren kann (z.B: eine Version von gcc)???

Bernd

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.