Verschiedene Versionen von Boost-Libraries einbinden



  • Hallo,

    ich arbeite mit Eclipse und binde Boost-Libraries ein. Die eingebundenen .so-Dateien heissen z.B. boost-filesystem-gcc41-mt_1_35.so. Wenn ich nun zu einer neuen Version von Boost übergehe oder zwischen Rechnern wechsle, auf denen verschieden Boost-Versionen installiert sind, muss ich "gcc??" und "mt_1_??" immer anpassen.

    Gibt es da eine elegantere Lösung?



  • ingobulla schrieb:

    Hallo,

    ich arbeite mit Eclipse und binde Boost-Libraries ein. Die eingebundenen .so-Dateien heissen z.B. boost-filesystem-gcc41-mt_1_35.so. Wenn ich nun zu einer neuen Version von Boost übergehe oder zwischen Rechnern wechsle, auf denen verschieden Boost-Versionen installiert sind, muss ich "gcc??" und "mt_1_??" immer anpassen.

    Gibt es da eine elegantere Lösung?

    Du kannst boost per bjam mit --layout=system bauen dann werden diese sachen nicht angehängt. Mal davon abgesehen könnte es gut sein das eine andere Version inkompatibel zu der anderen ist. Daher würde ich mich da nicht so drauf verlassen. Kann sein, muss aber nicht.

    BR
    Vinzenz



  • Zur kompilierung von boost gibt es hier ein Tutorial:
    http://www.spieleprogrammierer.de/phpBB2/viewtopic.php?t=10842

    Ist aber afaik noch nicht gross von Anfängern ausprobiert worde, also dann bitte auch Verbesserungsvorschläge posten und was nicht so verständlich war. 😉



  • Kompilierst du Boost selbst, oder möchtest du jeweils vorhandene Libraries benutzen?

    Die meisten Linux-Distributionen z.B. installieren die Libraries zwar unter Namen wie libboost_thread-gcc41-mt-1_34_1.so.1.34.1 , legen aber zusätzlich Symlinks darauf an, die dann einfach nur z.B. libboost_thread-mt.so heißen. D.h. beim Linken reicht es, wenn du einfach nur -lboost-thread-mt angibst. Der Linker ist dann aber schlau genug, sich auch das Ziel des Symlinks anzugucken, und linkt dein Binary automatisch gegen die richtige Library mit vollen Versions-Informationen.



  • dooooomi schrieb:

    Kompilierst du Boost selbst, oder möchtest du jeweils vorhandene Libraries benutzen?

    Ich kompiliere Boost selbst.

    dooooomi schrieb:

    Die meisten Linux-Distributionen z.B. installieren die Libraries zwar unter Namen wie libboost_thread-gcc41-mt-1_34_1.so.1.34.1 , legen aber zusätzlich Symlinks darauf an, die dann einfach nur z.B. libboost_thread-mt.so heißen.

    Wo liegen diese Symlinks denn normalerweise? Ich habe meinen boost-Ordner durchsucht und wurde dort nicht fündig



  • ingobulla schrieb:

    Wo liegen diese Symlinks denn normalerweise? Ich habe meinen boost-Ordner durchsucht und wurde dort nicht fündig

    Das war nur auf die Binär-Pakete der verschiedenen Linux-Distributionen bezogen. Wenn du Boost selbst kompilierst, musst du die Symlinks selbst erstellen. Bei den Binärpaketen sollten die Symlinks auch normal in /usr/lib liegen; dort könntest du ja auch selbst welche erstellen.



  • devkid schrieb:

    Wenn du Boost selbst kompilierst, musst du die Symlinks selbst erstellen.

    Bedeutet das, ich muss ein Skript erstellen, das mir per "ln -s ..." die symbolischen Links anlegt? Oder gibt es da einen eleganteren Weg?



  • Im Prinzip schon, man kann das ganze natürlich auch manuell machen. Ich kenn mich da aber nicht so aus, evtl. gibt es ja bereits ein Script, das das automatisch macht. Schau dir am besten mal debhelper an, da ist möglicherweise sowas dabei.


Anmelden zum Antworten