Software - libs



  • Hi,

    aktuell habe ich einige Softwarekomponenten, von welchen
    eines zum Beispiel ein OS ist. Das OS ist eine lib, welche wiederum
    user-libs bnutzt.

    Wie ist das, kann ich die user-libs direkt in die OS-lib rein packen ??

    Wenn ich zum Beispiel ein Programm main.cpp habe, welches die OS lib verwendet,
    dann würde ich sehr ungerne beim linken von main.cpp nochmal die libs verlinken, welche von OS benötigt werden. Es wäre schön, wenn es genügen würde, die OS Lib zu verlinken, weil diese bereits alle user-libs beinhaltet.

    Geht das ??

    Beste Grüße


  • Mod

    Ja. Mehr kannst du erfahren, wenn du uns deine Plattform verrätst, denn die Bedienung deines Linksystems hat nun wirklich überhaupt gar nichts mit C++ zu tun.



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x und C++11) in das Forum Rund um die Programmierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Ich benutze makefiles g++ und ar
    Sorry, das mit dem C++ Forum ist irgendwie gewohnheit...
    Für das OS möchte ich boost verwenden, soll also etwas für den PC werden.


  • Mod

    Prinzipiell kann man mit ar Objektdateien wieder auspacken* und dann zusammen in größere Bibliotheken packen. Oder einfach gleich alles zusammen packen. Brauchst du das überhaupt? Wenn die "user-lib" nur von der "OS"-Bibliothek benutzt wird, kannst du die "user-lib" auch statisch in die "OS"-Bibliothek linken. Das geht natürlich nur, wenn die "user-lib" wirklich nur von den Funktionen in der "OS" benutzt wird und nicht im Hauptprogramm.

    *: Eine (statische) Bibliothek ist schließlich nichts anderes als ein ar-Archiv.



  • Hi SeppJ,

    Danke für die Antwort...
    Also du beschreibst zwei dinge, welche ich nicht ordentlich auseinanderhalten kann.

    1.)
    -Meine lib_.a ist statisch aus mehreren object files zusammengebaut.
    (Aktuell nur eins, aber das soll mal egal sein.)
    -Jetzt versuech ich aktuell mit
    ar q lib_
    .a lib_boost_.a
    die beiden libs zusammen zu bauen. (Das ist glaube ich das Selbe
    wie die objectfiles aus den beiden libs wieder raus zu holen, in einen Ordner zu schmeißen und dann aus allen objectfiles wieder eine lib zu bauen)
    (Aktuell bekomm ich da den fehler "no Entry ... in archive" )
    => Das von mir erhoffte Ergebnis.
    - Das Ergebnis aus den "gemergeten" libs soll mal libos.a sein
    Wenn ich main.cpp gegen libos.a linke, müßte es doch funktionieren.
    Natürlich könnte ich, wenn ich die richtigen headerfile einbinde Zugriff auf die
    lib_boost_
    .a von main.cpp aus haben. Aber ich dachte das ließe sich nur durch die Trennung der Headerfiles vermeiden. ....
    Deine andere Variante.... leuchtet mir gerade nicht ein ...
    lib_boost_*.a statisch in "OS"-Bibliothek linken ??
    Ich dachte beim linken würde ein executable raus kommen ??

    Wobei dein Zweiter Fall genau das Beschreibst, was ich gerne hätte. Ich habe leider nur keine Vorstellung wie genau das gehen soll.... das wieder spricht leider etwas meinem Verständnis....



  • Okay, also Methode Eins läuft...
    es gibt noch ein WinSockes Problem mit MinGw und ASIO..
    man kann das mit -l ws2_32 beheben.


Log in to reply