PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : problem beim maken



Martinius11
19.12.2009, 00:17
hi ich hab ejetzt zum geburtstag den rp6 bekommen und habe auch winavr installiert jetzt hab ich aber bei den ersten make versuchen ein problem
kann mir jemand helfen.

Danke



> "make"

-------- begin --------
avr-gcc (WinAVR 20090313) 4.3.2
Copyright (C) 2008 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


Compiling: RP6Base_LEDs.c
avr-gcc -c -mmcu=atmega32 -I. -gdwarf-2 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=RP6Base_LEDs.lst -I../../RP6Lib -I../../RP6Lib/RP6base -I../../RP6Lib/RP6common -std=gnu99 -MD -MP -MF .dep/RP6Base_LEDs.o.d RP6Base_LEDs.c -o RP6Base_LEDs.o
../../RP6Lib/RP6base/RP6RobotBaseLib.h:196: warning: inline function 'isMovementComplete' declared but never defined
../../RP6Lib/RP6base/RP6RobotBaseLib.h:75: warning: inline function 'setLEDs' declared but never defined
../../RP6Lib/RP6base/RP6RobotBaseLib.h:196: warning: inline function 'isMovementComplete' declared but never defined
../../RP6Lib/RP6base/RP6RobotBaseLib.h:75: warning: inline function 'setLEDs' declared but never defined

Linking: RP6Base_LEDs.elf
avr-gcc -mmcu=atmega32 -I. -gdwarf-2 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=RP6Base_LEDs.o -I../../RP6Lib -I../../RP6Lib/RP6base -I../../RP6Lib/RP6common -std=gnu99 -MD -MP -MF .dep/RP6Base_LEDs.elf.d RP6Base_LEDs.o ../../RP6Lib/RP6base/RP6RobotBaseLib.o ../../RP6Lib/RP6common/RP6uart.o --output RP6Base_LEDs.elf -Wl,-Map=RP6Base_LEDs.map,--cref -lm
RP6Base_LEDs.o: In function `main':
c:\users\martinius\desktop\rp6examples\rp6base_exa mples\Example_01_LEDs/RP6Base_LEDs.c:64: undefined reference to `setLEDs'
c:\users\martinius\desktop\rp6examples\rp6base_exa mples\Example_01_LEDs/RP6Base_LEDs.c:77: undefined reference to `setLEDs'
c:\users\martinius\desktop\rp6examples\rp6base_exa mples\Example_01_LEDs/RP6Base_LEDs.c:94: undefined reference to `setLEDs'
make: *** [RP6Base_LEDs.elf] Error 1

> Process Exit Code: 2
> Time Taken: 00:01 [/code]

Hubert.G
19.12.2009, 10:02
Du hast entweder die Files nicht im gleichen Verzeichnis oder nicht im makefile eingetragen.

Martinius11
19.12.2009, 11:09
nein es lag nicht am verzeichnis ich ahbe aber schon eine lösung gefunden ich habe mir die neuste vesion der libery von arexx runtergeladen und jetzt
klapt es
aber danke

Martinius11
19.12.2009, 16:28
ich hätte noch ne frage ich wolte ein programm schreiben und hab
einfach ein neues c element geöffnet und was geschrieben und wolte es
dann maken ging aber dann leider nicht .gibts dafür ne lösung?

Danke

Hubert.G
19.12.2009, 16:33
Der Name des *.c file im makefile eingetragen?

Martinius11
19.12.2009, 17:00
aha ich ahbe halt einfach die datei a1.c genommen und sie mit dem winavr
tool [Winavr]Make All gemaked muss ich das noch irgendwo eintragen ?

Hubert.G
19.12.2009, 17:18
In das makefile musst du das a1 eintragen.
Bei meinen alten makefiles sieht das so aus



# MCU name
MCU = atmega8

# Output format. (can be srec, ihex, binary)
FORMAT = ihex

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

Ich arbeite allerdings jetzt mit dem AVR-Studio, da brauche ich kein makefile.

021aet04
19.12.2009, 17:20
Öffne einmal das Makefile mit dem Editor und schau nach was bei TRG steht. Da sollte normalerweise der Name der C-Datei stehen, aber ohne die Endung *.c. Wenn du jetzt z.B. als Datei mit dem Hauptteil (main) die Datei "Test.c" hast muss in der makefile "TRG = Test" stehen.

MfG Hannes

Martinius11
19.12.2009, 17:24
kann ich das makefile so einrichten das es alle neuen *.c programme
maken kann?

021aet04
19.12.2009, 17:52
Normalerweiße erzeugt AVR Studio das Makefile selbst. Probleme kann es geben, wenn man andere Libs verwendet. Ich verwende z.B. AVRlib, da muss ich die Makefile immer in den Projektordner kopieren und von Hand ändern. Ob du das so machen musst weiß ich aber nicht.

PS: Im Artikelbereich gibt es einen Artikel von der Installation und Anwendung der AVRlib http://www.rn-wissen.de/index.php/Installationsanleitung_von_avrlib

MfG Hannes

Dirk
19.12.2009, 21:06
Hallo Martinius11,

wenn du beim RP6 neue Programme schreiben willst, erstellst du am besten einen eigenen Ordner \MeinProg1 im Ordner ...\Programs\RP6BASE_PROGRAMS.
Da hinein kommt dann dein neues MeinProg1.c - File, make_all.bat, make_clean.bat und makefile.
Dann änderst du im makefile die Zeile so:
TARGET = MeinProg1

So machst du es mit allen neuen Programmmen, dann klappt alles.

Gruß Dirk

Martinius11
20.12.2009, 00:01
wo finde ich ein makefile in der libary von winavr oder von rp6 libary
und kann ich für clean.bat und make.bat die aus der rp6 libary nehmen?

RobotMichi
20.12.2009, 07:43
Du musst einfach Clean, Make_All und make in den entsprenden Ordner kopieren und das Makefile ändern.

Gruß
Michi

Martinius11
20.12.2009, 14:24
Du musst einfach Clean, Make_All und make in den entsprenden Ordner kopieren und das Makefile ändern.

Gruß
Michi

make und all sind klar aber wo finde ich das makefile auf meinem pc?

Hubert.G
20.12.2009, 16:22
In dem Programmfile das du vorher geschrieben hast und gsagt hast das es funktioniert, muss doch auch ein makefile gewesen sein.
Dieses makefile kannst du nehmen und den Target-Namen ändern.

Martinius11
20.12.2009, 17:27
gut danke jetzt funktioniert alles

erik_wolfram
30.12.2009, 16:08
kann mir vielleicht jemand etwas zu dieser Fehlermeldung beim "maken" sagen:



D:\WinAVR\examples\FirstTry>make all
set -e; avr-gcc -MM -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=asuro.lst asuro.c \
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > asuro.d; \
[ -s asuro.d ] || rm -f asuro.d
0 [main] sh 5104 sync_with_child: child 5068(0x144) died before initialization with status code 0x0
9328 [main] sh 5104 sync_with_child: *** child state waiting for longjmp
C:\Users\KAsiMIR\AppData\Local\Temp\make11122.sh: fork: Resource temporarily unavailable
make: *** [asuro.d] Error 128

> Process Exit Code: 2


Ich habe Vista und wollte ein Beispiel nach Anleitung "maken".
Gibts da evlt. Zugriffsprobleme? Oder was bedeutet die Fehlermeldung?

MFG erik_wolfram

Xandi11
30.12.2009, 16:43
Damit das ganze funktioniert muss du den Ordner mit RP6Base_Examples oder RP6Control_Examples an irgendeinen Ort entpacken ...

in einem dieser Ordner kannst du dann jeweils eigene Ordner für deine Programme anlegen und jeweils in diesen Ordner die Makefiles dazukopieren ...

Bei Windows Vista kann es sein, dass auf der Systempartition Probleme wegen den verschiedenen Rechten bekommen.
Umgehen kannst du das indem du dich als Administrator anmeldest oder die Programm und Software auf einer anderen Partition hast.

erik_wolfram
30.12.2009, 17:09
so habe das Problem gelöst - nicht Vista an sich war das problem, sondern die 64bit Version!

Habe mir dafür die neue WinAVR version installiert und eine Datei Namens "msys-1.0.dll" ersetzt.
Jetzt klappts!