[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
odeintnicht 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
boostundlibsist - steht nach einem ersten Check dasselbe drin.Nun gut, ich kopiere also das Verzeichnis
boostin in mein/usr/local/includeund möchteodeint.hppverwenden:#include <boost/numeric/odeint.hpp>Das Kompilieren funktioniert (natürlich?) nicht, weil die
config.hppsich selbst im Verzeichnisboostvermisst!
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_traitsvermisst 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.
-
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/includedas Verzeichnisboostauftaucht.Leider fehlt eben
odeint.hppin 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/includedas Verzeichnisboostauftaucht.Leider fehlt eben
odeint.hppin 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 Dateiodeint.hppund das Verzeichnisodeintin das entsprechende Verzeichnisboost/numerickopiert.Das kompiliert zumindest ...
Aber wahrscheinlich hast du recht, dass ich dann auch einfach die neuste Version von
boostaus 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 installaufruft 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 installaufruft 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/localkopiert und extrahiert, den Suchpfad in meinem Makefile angegeben und es kompiliert!Top!

Fragen werden folgen ...

Viele Grüße,
-- Klaus.