www.mikrocontroller.net

Forum: Compiler & IDEs Problem mit Include


Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: The Daz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: The Daz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Haeng mal dein makefile an und beschreibe deine directory Struktur

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
AVR Studio, kein makefile

Autor: The Daz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, hast du ja eingangs schon erwaehnt. Da bin ich dann ueberfragt.
Ich benutze bisher nur die Kommando-Zeile.

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: The Daz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: The Daz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: The Daz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Markus (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Sag das doch gleich ;)
Vielleicht kannste mir damit mehr sagen (siehe Anhang)

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: The Daz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.