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


von Bernd S. (bernd66)


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) Benutzerseite


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)


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)


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)


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)


Lesenswert?

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

Gruß
Bernd

von Peter D. (peda)


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)


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)


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)


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

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
Noch kein Account? Hier anmelden.