[Boost](gelöst) odeint



  • Hallo ihr Lieben,

    also ich oute mich mal wieder als inkompetent eine einfache header-only Bibliothek wie Boost zu linken.

    Schweren Herzens musste ich feststellen, dass in meiner Debian Wheezy Distribution odeint nicht enthalten ist, also habe ich die Datei von odeint.com heruntergeladen.

    Ich entpacke das tar Archiv und muss mich erstmal fragen was der Unterschied der Verzeichnisse boost und libs ist - steht nach einem ersten Check dasselbe drin.

    Nun gut, ich kopiere also das Verzeichnis boost in in mein /usr/local/include und möchte odeint.hpp verwenden:

    #include <boost/numeric/odeint.hpp>
    

    Das Kompilieren funktioniert (natürlich?) nicht, weil die config.hpp sich selbst im Verzeichnis boost vermisst! 😕

    Na gut ... dem ist schnell abgeholfen, indem ich die Datei einfach zwei Verzeichnisse nach oben kopiere. 🙄

    Dann ... klappt es natürlich immer noch nicht, weil auf einmal ein Verzeichnis namens type_traits vermisst wird. 😕

    Hm, vielleicht sollte man mal endlich die README lesen ... darin steht immerhin

    odeint is a highly flexible library for solving ordinary differential equations.
    

    Na immerhin ...

    Und jetz?

    Gruß,
    -- Klaus.


  • Mod

    Boost richtig installieren? Ein paar zufällige Headerdateien in den Includeordner zu verschieben reicht bei Boost eben nicht aus. Da ist ein recht komplexer Installer dabei, der aber eigentlich recht gut dokumentiert ist.



  • SeppJ schrieb:

    Boost richtig installieren?

    Ah, moment. Ja, das war etwas naiv von mir.

    Also ich habe über den Paketmanager Veresion 1.49 installiert, s.d. in /usr/include das Verzeichnis boost auftaucht.

    Leider fehlt eben odeint.hpp in der Version 1.49.

    Kann ich also in das oben genannte Verzeichnis die ganzen Dateien des heruntergeladenen Archivs hineinkopieren? Verträgt sich das?

    Gruß,
    -- Klaus.



  • Klaus82 schrieb:

    Also ich habe über den Paketmanager Veresion 1.49 installiert, s.d. in /usr/include das Verzeichnis boost auftaucht.

    Leider fehlt eben odeint.hpp in der Version 1.49.

    Kann ich also in das oben genannte Verzeichnis die ganzen Dateien des heruntergeladenen Archivs hineinkopieren?

    Bloß nicht. Das gehört deinem Paketmanager.

    Installiere Boost einfach ohne Paketmanager, aber eben nach /usr/local statt nach /usr.



  • nman schrieb:

    Bloß nicht. Das gehört deinem Paketmanager.

    Installiere Boost einfach ohne Paketmanager, aber eben nach /usr/local statt nach /usr.

    Hm,
    also ich habe einfach mal die Datei odeint.hpp und das Verzeichnis odeint in das entsprechende Verzeichnis boost/numeric kopiert.

    Das kompiliert zumindest ...

    Aber wahrscheinlich hast du recht, dass ich dann auch einfach die neuste Version von boost aus dem tar Archiv installieren könnte und wäre fertig. Allerdings 'verschmutzt' das doch mein Linux und ich muss mich z.B. mit checkinstall rumschlagen.

    Gruß,
    -- Klaus.



  • pack dir doch eine aktuellere version irgendwo in dein homeverzeichnis rein. für header-only-libs reicht das -- must halt nur den include-suchpfad entsprechend setzen. es gibt auch ein boost tool nams "bcp", mit der man angeblich einen teil wie Boost.ODEINT mit seinen Abhängigkeiten extrahieren können soll. Das habe ich aber noch nie getestet.



  • Klaus82 schrieb:

    Allerdings 'verschmutzt' das doch mein Linux und ich muss mich z.B. mit checkinstall rumschlagen.

    Nein, dein System "verschmutzt" du höchstens, wenn du manuell in Standardverzeichnissen x-beliebiges Zeug herumkopierst.

    Lass den Boost-Installer einfach alles nach /usr/local installieren, das ist für genau solche Fälle gedacht.

    Wenn du einfach sowas machst, sollte sogar defaultmäßig /usr/local als Prefix verwendet werden, dh. Boost wird nach /usr/local/include/boost_VERSIONSNUMMER installiert:

    ./bootstrap.sh
    sudo ./b2 install
    


  • kkaw schrieb:

    es gibt auch ein boost tool nams "bcp", mit der man angeblich einen teil wie Boost.ODEINT mit seinen Abhängigkeiten extrahieren können soll.

    Ja, das geht idR. auch gut. Dann kann man die Dependencies, die Wheezy standardmäßig nicht mitbringt, einfach selbst mit seinen Sourcen mitbringen.



  • nman schrieb:

    Klaus82 schrieb:

    Allerdings 'verschmutzt' das doch mein Linux und ich muss mich z.B. mit checkinstall rumschlagen.

    Nein, dein System "verschmutzt" du höchstens, wenn du manuell in Standardverzeichnissen x-beliebiges Zeug herumkopierst.

    Aber ich dachte solad man die Befehle configure -> make -> make install aufruft wird ab dem dritten Befehl etwas am Paketmanager vorbei installiert, dem man dann auch nur noch manuell Herr wird?

    Wenn ich das in der Doku richtig lese, dann muss ich gar nix 'installieren' für odeint , weil es nicht bei den aufgezählten Bibliotheken auftaucht?

    Gruß,
    -- Klaus



  • Klaus82 schrieb:

    Aber ich dachte solad man die Befehle configure -> make -> make install aufruft wird ab dem dritten Befehl etwas am Paketmanager vorbei installiert, dem man dann auch nur noch manuell Herr wird?

    Ja, aber das wird alles nach /usr/local installiert und müllt dein sonstiges System nicht zu, sondern du kannst alles wieder deinstallieren, wenn du /usr/local/boost_VERSIONSNUMMER löscht.

    Wenn ich das in der Doku richtig lese, dann muss ich gar nix 'installieren' für odeint , weil es nicht bei den aufgezählten Bibliotheken auftaucht?

    Stimmt schon, das Ding ist Header-only. Aber du solltest den Header nicht in deine Standard-Includeverzeichnisse schieben, da gehört er einfach nicht hin.

    Entweder du installierst das ganze neue Boost nach /usr/local, was praktisch ist, wenn du damit rechnest, noch andere Komponenten eines neueren Boost zu verwenden, oder du kopierst dir den Header in dein lokales Source-Verzeichnis.

    bcp macht im Grunde nichts anderes. Das ist dazu da, bestimmte Boost-Einzelteile und ihre Dependencies zu extrahieren.



  • Aaaaaah,

    okay - ihr seid die Besten, ich bedanke mich wieder mal ganz herzlich!

    Ich habe jetzt brav die Version 1.55 nach /usr/local kopiert und extrahiert, den Suchpfad in meinem Makefile angegeben und es kompiliert!

    Top! 🙂 👍

    Fragen werden folgen ... 😃

    Viele Grüße,
    -- Klaus.


Anmelden zum Antworten