Hi, ich hab grad ein (sicher banales) Problem mit Include. Ich hab mir ne kleine Lib bestehend aus einem *.c und einem *.h file gebastelt. Solange beides zusammen mit dem main file in einem Ordner war ging es prima, aber jetzt würde ich es gern in ein eingenes Verzeichnis packen und jetzt bekomm ich folgende Fehlermeldung: make: *** No rule to make target `../usart.c', needed by `usart.o'. Stop. Ich könnte auch den gesamten Code in die usart.h Datei packen, aber das will ich nicht unbedingt. Wie muß ich da jetzt vorgehen? Ich verwende WinAVR zusammen mit dem AVR Studio Gruß Markus
Wenn du schon eine lib hast (sprich irgendwas mit .a oder .so am Ende), wozu brauchst du dann noch usart.o in deinem prog ? Du brauchst dort doch nur die header file und dann musst du dem compiler mit der -I option sagen, wo er danach suchen soll.
Ich hab keine fertig compilierte Lib. Ich hab ein *.c und ein *.h File an dem ich grad arbeite und auch compilieren muß. Und da kommt besagte Fehlermeldung. Ich hab auch schon den Library- und Include-Pfad entsprechend gesetzt. Aber irgendwas muß wohl noch fehlen. Und wie gesagt, ich arbeite mit dem AVR Studio
Sorry, hast du ja eingangs schon erwaehnt. Da bin ich dann ueberfragt. Ich benutze bisher nur die Kommando-Zeile.
naja, wie macht man es denn normal bei der Kommandozeile? Das AVR Studio macht ja letztendlich auch nichts anderes. Ich hab mir ein Verzeichnis für meine eigenen Libs angelegt c:\WinAVR\avr\include\mylib\ Darin befindet sich die usart.c und usart.h. Der Main Sourcecode ist in einem eigenen Projektverzeichnis. Was mußt du sonst noch wissen?
Ach ja, man kann für jedes File, also auch für usart.c, "Custom Compilation Option" angeben. Ich nehme mal an das da noch irgendwelche Angaben gemacht werden können/müssen. hier mal die komplette Ausgabe vom Compiliervorgang. Ich hoffe man kann's nachher noch lesen avr-gcc -I"C:\WinAVR\avr\include\mylib" -mmcu=atmega32 -Wall -gdwarf-2 -DF_CPU=14745600 -Os -fsigned-char -Wp,-M,-MP,-MT,Robo32.o,-MF,dep/Robo32.o.d -c ../Robo32.c avr-gcc -I"C:\WinAVR\avr\include\mylib" -mmcu=atmega32 -Wall -gdwarf-2 -DF_CPU=14745600 -Os -fsigned-char -Wp,-M,-MP,-MT,porttools.o,-MF,dep/porttools.o.d -c ../porttools.c make: *** No rule to make target `..//C/WinAVR/avr/include/mylib/usart.c', needed by `usart.o'. Stop.
Habs mal bei mir versucht und es hat auf Anhieb geklappt. Ich habe die source im subdirectory als zusaetzliche source hinzugefuegt und bei den options das subdir als include path hinzugefuegt. Damit wurde die source im Haupt- und Unterverzeichnis automatisch kompiliert.
Als ich versucht habe, den output in ein eigenes subdir zu verlagern, habe ich allerdings sofort das gleiche Problem bekommen. Fazit : output dorthin leiten, wo dein Haupt-Sourcefile liegt.
also so: Main Source: Project Folder Lib Source: Lib Folder Main Output: Project Folder Lib Output: Project Folder So weit, so gut. Wie macht man das an der Kommandozeile? Davon kann ich denke ich die nötigen Einstellungen für das AVR Studio ableiten. Makefile Angaben helfen glaub ich nur bedingt. Ich kämpf mich grad durch die Kommandozeilenparameter und raff nix
Nicht ganz. Wenn man den project folder fuer den output waehlt, werden alle .o files dort generiert, auch dein 'library' code. Auf der command line ruft man nur 'make' auf und braucht dazu natuerlich ein Makefile. Das wird uebrigens auch vom AVRStudio im output folder generiert. Wenn es nicht tut, dann kann man es auch direkt in einem Editor aendern.
Sag das doch gleich ;) Vielleicht kannste mir damit mehr sagen (siehe Anhang)
Hm, hab glaub ich die Ursache. Die komische Pfadangaben. Hab mal einen korrekten Pfad eingegeben und das Makefile direkt verwendet, dann gings. Mal rausfinden wieso der da so nen dämlichen Pfad einbaut
Hmm. Versuch mal die beiden Punkte vor //C/WinAvr mit nem Editor zu loeschen und im subdir des Makefiles make auf der command line aufzurufen.
Ich hab den kompletten Pfad mal auf standard DOS umgeändert und dann statt den AVR Studio eigenen Parametern mal das Makefile direkt angegeben. Dann geht es klaglos. Aber das ist halt keine zufriedenstellende Lösung, höchstens ne vorübergehende. Man müsste rausfinden wieso das AVR Studio so nen komischen Pfad erzeugt bzw ob man irgendwas anderes einstellen muß damit der stimmt
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.