Forum: Compiler & IDEs makeFile Problem


von Boggi (Gast)


Angehängte Dateien:

Lesenswert?

Hi Leute

Ich habe mich heute entschieden mein Problem ins Forum zu posten, da
ich alleine nicht mehr weiterkomme.

Ich arbeite mit dem GCC von Winavr.
Habe mir danach die AVRX- Libary heruntergeladen und installiert.

die Beispielsourcen die bei der Libary dabei sind (incl. Makefiles)
funktionieren einwandfrei.

Dann habe ich versucht, die Libary in mein MakeFile einzubauen und bin
gescheitert.
Dann habe ich versucht mein Project in das Beispiel-makeFile
einzubauen. Dabei bin ich ebenfalls gescheitert.

Das problem ist, dass mein Project aus mehreren Dateien besteht, und
ich das dem MakeFile irgendwie nicht bei bringen kann

Ich hoffe mir kann jemand hgier helfen ...

Ihr seid meine letzte hoffnung

Hier die Fehlermeldungen:


Compiling: main.c
avr-gcc -c -mmcu=atmega128 -I. -g   -Os -funsigned-char
-funsigned-bitfields -fpack-struct -fshort-enums -Wall
-Wstrict-prototypes -Wa,-adhlns=main.lst -Iavrx/ -std=gnu99
-Wp,-M,-MP,-MT,main.o,-MF,.dep/main.o.d main.c -o main.o
In file included from main.c:13:
Sleep.h:2: warning: function declaration isn't a prototype
Sleep.h:3: warning: function declaration isn't a prototype
Sleep.h:4: warning: function declaration isn't a prototype
main.c:142: warning: return type of `main' is not `int'

Linking: main.elf
avr-gcc main.o avrx/avrx.a -mmcu=atmega128 -I. -g   -Os -funsigned-char
-funsigned-bitfields -fpack-struct -fshort-enums -Wall
-Wstrict-prototypes -Wa,-adhlns=main.o -Iavrx/ -std=gnu99
-Wp,-M,-MP,-MT,main.o,-MF,.dep/main.elf.d main.o sleep.o   --output
main.elf -Wl,-Map=main.map,--cref    -lm
main.o(.text+0x0): In function `LedNight':
D:\Aquarium/main.c:40: multiple definition of `LedNight'
main.o(.text+0x0):D:\Aquarium/main.c:40: first defined here
main.o(.text+0x52): In function `main':
D:\Aquarium/main.c:142: multiple definition of `main'
main.o(.text+0x52):D:\Aquarium/main.c:142: first defined here
make: *** [main.elf] Error 1

> Process Exit Code: 2



und im Anhang findet ihr das makefile ...

Ich hoffewirklich ihr könnt mir helfen thx

von Fritz Ganter (Gast)


Lesenswert?

Du hast main.c und sleep.c als Dateien angeben, wolltest du das?

Lies doch einfach mal die Fehlermeldung, dafür ist sie doch da!

D:\Aquarium/main.c:142: multiple definition of `main'
main.o(.text+0x52):D:\Aquarium/main.c:142: first defined here

Kann es sein, dass du in sleep.c auch die Funktion main drinnen hast?

Im Makefile brauchst du nur deine Dateien eintragen, wenn du z.b
josef.c hilf.c und irgendwas.c hast, und dein Programm josef heissen
soll, dann trag ein:

# Target file name (without extension).
TARGET = josef


# List C source files here. (C dependencies are automatically
generated.)
SRC = $(TARGET).c hilf.c irgendwas.c

$(TARGET).c wird hier zu josef.c expandiert.

Du darfst natürlich nur in einem file ein main() haben.

von Boggi (Gast)


Lesenswert?

ich habe in sleep.c kein main drinnen ...


und habe so wie du es beschrieben hast ja auchg angegeben ...

ein Target ... und das file heisst main
und mehrere sourcen ... wie z.bsp Sleep und main ...


das gtanze funktioniert, wenn ich die funktionalität von Sleep.c nach
main.c kopiere und nsleep.c aus dem makefile herausneheme. Aber ich
will das ja schön übersichtlich gestalten

von Fritz Ganter (Gast)


Lesenswert?

>ein Target ... und das file heisst main
>und mehrere sourcen ... wie z.bsp Sleep und main ...

Bei den Sourcen darf main.c nicht mehr drin sein, weil es als $target
schon drin steht.

Die Fehlermeldungen sehen aus als wenn main.c zweimal gelinkt wird.

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.