makeFile Problem

Gast #77709
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
Angehängte Dateien:
Gast #77710
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.
Gast #77711
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
Gast #77712
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren