Forum: Mikrocontroller und Digitale Elektronik Atmel Studio 7 schreibt vor alle Pfade ein -l (minus kleines L)


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Bernd S. (bernd66)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,
kurz zu mir.
Ich bin Baujahr 66, kenne mich sehr gut mit PC und Software aus und 
versuche seit 2 Wochen Mikrocontroller zu programmieren. In Assembler 
funktionierte das.

Mein Problem besteht darin , das mit Win 10, einem Atmega2560 und Atmel 
Studio 7 bei einigen C Programmen bei "build" immer wieder vor die 
Libraries ein -l (kleines L) gesetzt wird. Auch vor Pfadnamen, z. B.
aus C:\....  wird dann -lC:\....  aus io.h wird -lio.h (cannot find 
-lio.h)  usw.
Logischerweise wird kein Pfad, bzw. keine Lib erkannt.
Ich habe ewig gesucht, finde aber das Problem nicht. Bei Examples von 
Atmel gibt es diese Probleme nicht.
Hat jemand eine Ahnung woran das liegen kann. Ich bin kurz vorm 
Aufgeben. Hab das Atmel Studio 7 schon neu installiert und alle 
möglichen Pfade eingebunden. Hilft nix!

Danke
Bernd

von Rufus Τ. F. (rufus) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Bernd S. schrieb:
> Mein Problem besteht darin , das mit Win 10, einem Atmega2560 und Atmel
> Studio 7 bei einigen C Programmen bei "build" immer wieder vor die
> Libraries ein -l (kleines L) gesetzt wird. Auch vor

Du verwechselst Headerdateien und Libraries.

Dateien wie "io.h" sind eine Header- oder auch Include-Datei.

Diese werden in Dein Programm mit Anweisungen wie #include "io.h" 
eingebunden.

Das geschieht nicht in der Projektverwaltung, da kann man nur den 
sogenannten "include path" angeben, wenn die Dateien an einem anderen 
Ort gesucht werden sollen, als an dem, an dem auch Deine Quelltexte 
liegen.

Eine Library ist eine Sammlung bereits compilierter Programmdateien, 
die vom Linker zum Programm hinzugefügt wird.

Libraries heißen je nach verwendetem Compiler/Linker *.a oder *.lib.

von Bernd S. (bernd66)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

vielen Dank für die Antwort. Ja, stimmt, ich weiß nicht
wie ich jetzt auf Libraries komme. Hab ich wohl verwechselt.

Natürlich Header Dateien. Diese sind in main.c auch eingebunden mit z.B.
#include <avr/io.h> oder #include "stdlib.h". Die Pfade der Header 
Dateien sind in den Eigenschaften des Projektes angegeben. Kann man hier 
zuviele Pfade angeben? Habe alle möglichen eingebunden, da die .h 
Dateien ja auch nicht alle in einem Ordner installiert werden.
Beim compilieren kommen dann die Fehler,
cannot find -lio.h und -lstdlib.h.

MfG
Bernd

von Simon G. (sigro)


Bewertung
0 lesenswert
nicht lesenswert
Hast du in den Projekteigenschaften die Header-Dateien unter:
AVR/GNU Linker->Libraries eingetragen?
Das wäre, wie Bernd schon schrieb, falsch, und könnte zu diesem 
Verhalten führen.

: Bearbeitet durch User
von Lukas (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Simon G. schrieb:
> Hast du in den Projekteigenschaften die Header-Dateien unter:
> AVR/GNU Linker->Libraries eingetragen?

Warum sollte er das? Das Studio ist ready to use.

Da wurde nachträglich etwas verändert, so dass das 'l' Bestandteil des 
Headernamens wird.

> Habe alle möglichen eingebunden ...

Poste ein einfaches Projekt mit dem Problem.

von Bernd S. (bernd66)


Bewertung
0 lesenswert
nicht lesenswert
Danke, muß ich heute abend machen, bin jetzt nicht am PC mit
Atmel Studio.

Gruß
Bernd

von Peter D. (peda)


Bewertung
0 lesenswert
nicht lesenswert
Bernd S. schrieb:
> Bei Examples von
> Atmel gibt es diese Probleme nicht.

Was hindert Dich daran, ein Example als eigenes Projekt abzuspeichern?

Bernd S. schrieb:
> Habe alle möglichen eingebunden, da die .h
> Dateien ja auch nicht alle in einem Ordner installiert werden.

Man bindet nur die Header ein, die auch benutzt werden.
Mit -IVerzeichnis kann man weitere Verzeichnisse zum Suchpfad 
hinzufügen.
Vielleicht hast Du -I mit -l verwechselt.

von Sheeva P. (sheevaplug)


Bewertung
0 lesenswert
nicht lesenswert
Lukas schrieb:
> Warum sollte er das?

Weil er sich damit (noch) nicht auskennt.

> Da wurde nachträglich etwas verändert, so dass das 'l' Bestandteil des
> Headernamens wird.

Da steht was von -l -- also mit einem Minus ("-") davor. So werden 
aber keine Header-Dateien wie die vom OP angegebene io.h angegeben, 
sondern Libraries. Da er etwas von "-lio.h" schreibt, liegt der Verdacht 
nahe, daß er die Header versehentlich als Libraries eingetragen hat.

von Bernd S. (bernd66)


Bewertung
0 lesenswert
nicht lesenswert
Lukas schrieb:
> Simon G. schrieb:
>> Hast du in den Projekteigenschaften die Header-Dateien unter:
>> AVR/GNU Linker->Libraries eingetragen?

Oh, hab ich tatsächlich gemacht.......
Und in der Zeile darüber (augegraute Voreinstellungen stand in etwa
Libraries (-Wl,-l).
Hab dann versucht das -l wegzubekommen, kann aber nicht verändert 
werden.

Weiß nicht wie ich auf libraries kam..ich lösche heute abend die 
Einträge und informiere Euch.

von Bernd S. (bernd66)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich hab jetzt die Header Dateien aus dem Librarie Pfad entfernt und das 
-l ist erst mal weg.
Danke Euch, hatte wohl rotes Gemüse auf den Augen.

Es ist aber trotzdem eine Katastrophe mit den ganzen Pfaden. So ein 
heilloses Durcheinander hatte ich nicht erwartet. Genau beschreiben 
würde jetzt zu lange dauern. Selbst Header Dateien welche sicher in den 
verlinkten Pfaden liegen werden nicht gefunden.
Win 10 ist hier ganz schlimm. Ich habe einen Pfad c:\Benutzer\Bernd der 
wird angezeigt als c:\User\Bernd...
Programme werden anstandslos in C:\Programmfiles installiert, aber den 
Ordner Programmfiles gibt es nicht auf C:  (auch nicht versteckt). Die 
sind dann in Programme(x86).
Na ja, egal jetzt, wollte nur mal meckern.
Für heute gebe ich es auf, keinen Bock mehr. Ich komme gar nicht zum 
programmieren.
Komischerweise hatte ich mit Assembler diese Probleme nicht. Nur Blasen 
an den Fingern vom vielen Tippen auf der Tastatur.
Danke noch mal an alle Beteiligten.

Bernd

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]
  • [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.