mikrocontroller.net

Forum: Compiler & IDEs undefined reference to main! obj zu hex datei??


Autor: adil gandhi (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hab error bei make:
make
avr-gcc  systimer.o lcd.o sta013.o uart.o i2c.o spi.o ata_if.o
playmgr.o procyon.o   -Wl,-Map=procyon.map,--cref  -mmcu=atmega128 -o
procyon.elf
C:\WinAVR\bin\..\lib\gcc-lib\avr\3.3.1\..\..\..\..\avr\lib\avr5\crtm128. 
o(.init9+0x0):
undefined reference to `main'
avr-objcopy -O avrobj procyon.elf procyon.obj
avr-objcopy: procyon.elf: No such file or directory
avr-objcopy -O ihex procyon.elf procyon.rom
avr-objcopy: procyon.elf: No such file or directory
avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" -O
ihex procyon.elf procyon.eep
avr-objcopy: procyon.elf: No such file or directory
>Exit code: 0

gibt es kein weg einfach die object dateien in hex direkt umzuwandeln.

alle hilfe benötigt.
danke.

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
HÄ?

Wenn der Linker versagt, willst du obj-Dateien in Hex-Dateien
umwandeln? Wo soll'n da der Witz sein?

Geh der ersten Fehlermeldung nach, dann klärt sich der Rest auch.

Autor: adil gandhi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
der int main (void) steht in ein procyon.c aber der erkennt der main
nicht... und hab schon überall in internet gesucht.nichts gefunden.

Autor: Patrick Dohmen (oldbug) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, aber Jörg hat Dir doch schon geantwortet.
Doppelposts sind unhöflich und rauben viel Freizeit!

Autor: Andreas B (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lies mal was dein Linker dir sagt:

"undefined reference to `main'" bedeutet, dass der Linker die
Referenz zur main nicht auflösen kann.

Möglicherweise ist sie doch nicht da?

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Möglicherweise ist sie doch nicht da?

In den Files ist sie drin, aber ich bekomme dieses Makefile-
Gewurschtel nicht mit vertretbarem Aufwand zum Laufen.

Autor: Karl heinz Buchegger (kbucheg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab gestern versucht, dass ganze mittels
AVR-Studio zu entwirren.
Neues Projekt erzeugt, Source Files hinzugefügt.
Prozessor ausgewählt und compile.
Nach dem 5. File bei dem ich

   #include <io.h>

gegen

  #include <avr/io.h>

getauscht habe und einige veraltete Konstrukte, die
der Compiler nicht mehr kennt, gegen Neuere ausgetauscht
habe, hab ich aufegegeben. War mir zu viel Stress.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Genauso ging mir's auch.  Soll Herr Stang seinen Kauderwelsch
bitte selbst supporten, wenn er sich nicht an Konventionen
halten kann.

Autor: adil gandhi (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
die makefile sind mit noch 2 makefiles verbunden.....make1 und make2

hab ich auch in dieser antwort angehängt

ohne die beiden makefiles geht es nicht.

Autor: adil gandhi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
die beide make files hab ich unter $(AVR)/include/ auch kopiert so dass
der makefile die andere zwei erkennen und das macht sie auch.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
S. o.: es ist zu viel Aufwand für unserereiner, das alles zu
entwirren.  Es sind nicht die Makefiles, ich habe mir 1-fix-3
mit Mfile ein neues gezimmert, Karl Heinz hat sich ein AVR-Studio-
Projekt gebaut, aber der Code selbst ist so neben den Konventionen,
dass man das nicht compiliert bekommt.  Wenn Pascal Stang nicht
#include <avr/io.h> schreiben kann, sondern darauf besteht,
#include <io.h> zu schreiben, wenn er nicht nach X Jahren endlich
mal geschnallt hat, dass inb() und outb() der Vergangenheit
angehören -- dann sorry, dann soll er sein Zeug bitte selbst
supporten.

Autor: Karl heinz Buchegger (kbucheg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sehe ich auch so.
Wobei ich mir zu 99% sicher bin:
Wenn man diese alten Konstrukte (da war noch irgendwas
im uart.c, anscheined wuren einige Makros nicht gefunden,
ich bin dem dann aber nicht mehr näher nachgegeangen; ach
ja: eine Datei io128v.h oder so ähnlich konnte ich auch nicht
finden) gegen Zeitgemässes ersetzt, dann compiliert und linkt das
ohne Probleme.
Das Makefile an sich ist ja bei AVR-Studio überhaupt kein
Problem. Einfach die Source Files in ein Projekt einfügen
und das Studio erzeugt daraus das Makefile. Noch ein paar
(selbstverständlichen) Einstellungen, wie Prozessor und
Prozessorgeschwindigkeit in den Projekt-Options einstellen
und dann funzt das auch.

Nur: Das Ganze sollte halt mit einem halbwegs zeitgemässen
Compiler ohne 25-tausen zusätzlichen Header-Files fehlerfrei
compilieren. 1 oder 2 Fehler behebe ich stillschweigend aber
wenn der Compiler da eine Litanei runterleiert und ich zuerst
mal die System-Includes durchforsten muss um die Funktion zu
finden, dann höre ich ganz schnell wieder auf.

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.