Keil Compiler Frage

Persönliche Seite #256339
Lesenswert?
• ▲
▼
Nein.

Linken auf Funktionsebene ist kein übliches Verhalten von
C/C++-Compilern. Diese (genauer: deren Linker) linken auf Modulebene,
wobei ein Modul ein übersetztes C- bzw. C++-Sourcefile ist.
Der Linker linkt alle Module, die zum Projekt gehören (sprich: im
Makefile aufgelistet sind), ohne darauf zu achten, ob der Code
verwendet wird oder nicht.

Nur bei Verwendung einer Library sieht das anders aus; aus der Library
werden nur die Module extrahiert, die auch tatsächlich benötigt
werden.

Also musst Du jede -potentiell- entbehrliche Funktion in ein eigenes
Sourcemodul packen und alle diese Sourcemodule zu einer Library
übersetzen, die Du dann zu Deinem Projekt linkst.
Gast #256340
Lesenswert?
• ▲
▼
Ok, danke!
Mit Librarys habe ich mich ncoh nicht beschäftigt, aber dann muss ich
das wohl machen. Wenn ich dich richtig verstehe, reicht es dann auch
nicht aus, einfach eine Library aus meinem *.c File zu machen, sondern
ich muss jede Funktion in ein eigenes File packen und dann zu einer
Library zusammenführen?!
Oder was bedeutet Sourcemodule?

Ach ja, unterstütze Keil eigentlich das Erzeugen von Librarys?
Gast #256344
Lesenswert?
• ▲
▼
Wenn du für jede Funktion ein eigenes Source-File hast, kannst du auch
einstellen, dass er die nicht benötigten Files einfach nicht linkt. Das
musst du aber manuell machen.

Noch einfacher ist es aber, nicht benötigte Files einfach gar nicht ins
Projekt einzubinden.

Da du für eine Lib eh alles in einzelne Files verpacken musst, kannst
du es auch gleich so machen.

Meiner Meinung nach hat das den Vorteil, dass du nicht bei jeder
Änderung die Lib neu erstellen musst.

Gruß Ralf
Gast #256345
Lesenswert?
• ▲
▼
also ich hab z.b. ein file, da stehen die routienen für das lcd-display
drin. und das soll ich also zerstückeln und für jede einzelne routiene
ein file erstellen?!
und dann diese files in ein projekt zusammenführen (alle einzeln, ohne
dass sie aufgerufen werden, also ohne main) und dann in eine library
compilieren?
Gast #256346
Lesenswert?
• ▲
▼
Ja, oder du sparst dir das Lib-Erstellen, und nimmst die einzelnen
Module in das Projekt mit auf. Natürlich nur die, die du brauchst.

Für den eigenen Gebrauch machen Libs aus meiner Sicht keinen Sinn. Die
würde ich eher dann verwenden, wenn ich kommerziell für jemanden
Software entwickle, und sicherstellen will, dass keiner an den
Quellcode rankommt.

Ralf

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.