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


von adil gandhi (Gast)


Angehängte Dateien:

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.

von Thomas (Gast)


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.

von adil gandhi (Gast)


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.

von Patrick D. (oldbug) Benutzerseite


Lesenswert?

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

von Andreas B (Gast)


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?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


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.

von Karl heinz B. (kbucheg)


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.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

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

von adil gandhi (Gast)


Angehängte Dateien:

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.

von adil gandhi (Gast)


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.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


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.

von Karl heinz B. (kbucheg)


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.

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
Noch kein Account? Hier anmelden.