Wie funkt. statische libs in C?

  • Bsp. libstdc++.a:


    Da steht also drin, welche object-files welche Definitionen enthalten.
    Wo aber sind diese object-files? Ich verstehe nicht ganz, woher der Linker schlussendlich den einzufügenden Binärcode kriegt. Ich dachte immer, .a - libs enthalten komplette object-files, so wie in jar-Archiven .class-Dataien liegen, aber scheinbar sind da nur Referenzen drin. Aber wohin zeigen die? Oder unterliege ich einem Verständnisfehler des Ganzen?

  • Zitat von Incazzato


    Da steht also drin, welche object-files welche Definitionen enthalten.
    Wo aber sind diese object-files? Ich verstehe nicht ganz, woher der Linker schlussendlich den einzufügenden Binärcode kriegt. Ich dachte immer, .a - libs enthalten komplette object-files, so wie in jar-Archiven .class-Dataien liegen, aber scheinbar sind da nur Referenzen drin. Aber wohin zeigen die? Oder unterliege ich einem Verständnisfehler des Ganzen?


    Ich weiß nicht wie du darauf kommst dass da nur Referenzen drinnen sein sollen. Dein Beispiel sieht aus wie die Ausgabe von nm, und da ist ja klar, dass nur Adressen zu sehen sind. Es sind in einer Library definitiv die gesamten Objectfiles enthalten.

    Why bother spending time reading up on things? Everybody's an authority, in a free land.

  • Mit ar kann man .a-files auch wieder entpacken (siehe man ar).

    [font=verdana,sans-serif]"An über-programmer is likely to be someone who stares quietly into space and then says 'Hmm. I think I've seen something like this before.'" -- John D. Cock[/font]

    opentu.net - freier, unzensierter Informationsaustausch via IRC-Channel!
    Hilfe und Support in Studienangelegenheiten, gemütliches Beisammensein, von und mit Leuten aus dem Informatik-Forum!

  • Zitat von jeuneS2

    Ich weiß nicht wie du darauf kommst dass da nur Referenzen drinnen sein sollen. Dein Beispiel sieht aus wie die Ausgabe von nm, und da ist ja klar, dass nur Adressen zu sehen sind. Es sind in einer Library definitiv die gesamten Objectfiles enthalten.


    Tatsächlich. Interessanterweise gibt das "less" so schön leserlich aus, wie ich es reinkopiert habe, ohne vorher wg. binary file oder so zu warnen...

    Damit hätte sich die ganze Frage dann geklärt, danke

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!