reguläre ausdrücke / gcc 3.3.4 Einbindungs - und Anwendungsprobleme



  • Sehe ich das richtig, dass -I aber schon gesetzt ist durch die Angabe der Bibliothek? Denn in der Fehlermeldung hat der ja den Pfad des Archiv-Files hinter dem Parameter -I stehen, also kennt er ihn dort schon?
    Für was genau steht das -L und -I?
    -l ist die Bibliothek und -L der Pfad dorthin?
    Und muß ich <boost> durch den Installationspfad von Boost ersetzen? das habe ich bei Anjuta nämlich auch schon versucht, hat aber nix gebracht...
    Wenn ich diese Pfade dem Compiler übergebe, muß ich das ja jedes mal machen. Kann man diese Pfade nicht auch irgendwo fest setzen?



  • Schau mal, wo Boost bei dir liegt. ICh habe gerade geschaut. Bei mir liegt boost unter /usr/lib. Sollte das der fall sein, musst du nur

    -l boost_regex-gcc-1_32
    

    zum Linker hinzufügen. Wie das genau bei Anjuta geht, kann ich dir leider nicht sagen, da ich es nicht benutze. Das -I musst du nicht setzen, da die Boost Includes schon im standard Pfad des Compilers liegen. Das -L kannst du auch weglassen, wenn die Libs im standard Pfad für Libraries /usr/lib oder /lib liegen.



  • Das hört sich fast so an, als wäre es sinnvoll, die Dateien in usr/lib zu installieren. 😉
    Ist es eigentlich ohne Probleme möglich, boost zu verschieben? Muß man dazu erst alles wieder deinstallieren, damit es keine Probleme gibt? Oder lasse ich es besser dort wo es ist?
    Tut mir leid, dass ich Dir gerade Löcher in den Bauch frage, aber Du hilfst mir unheimlich weiter.



  • Wo ist Boost denn jetzt installiert? Wie hast du es denn installiert?



  • Hi,

    ich habe die Parameter wie folgt gesetzt:
    Include-Pfad: I/home/Kerstin/c++/regular_expressions/boost_1_32_0/boost_1_32_0
    dies entspricht dem Boost-Installationspfad

    Bibliothekspfad
    I/home/Kerstin/c++/regular_expressions/boost_1_32_0/boost_1_32_0/libs/regex/build/gcc/

    Bibliothek -l/libboost_regex-gcc-1_32.a

    (siehe auch Fehlermeldung unten)

    Dies sind die Pfade, in die ich die Dateien installiert habe. Trotzdem wird die Bibliothek nicht gefunden.

    Ich muß irgendeienn blöden Fehler dabei machen, habe aber keine Ahnung, wo ich noch anstezen könnte.

    Datei testprog_boost.cc wird generiert ...
    g++ -I/home/Kerstin/c++/regular_expressions/boost_1_32_0/boost_1_32_0 "testprog_boost.cc" -L/home/Kerstin/c++/regular_expressions/boost_1_32_0/boost_1_32_0/libs/regex/build/gcc/ -l/libboost_regex-gcc-1_32.a -o "testprog_boost"
    /usr/lib/gcc-lib/i586-suse-linux/3.3.4/../../../../i586-suse-linux/bin/ld: cannot find -l/libboost_regex-gcc-1_32.a
    collect2: ld returned 1 exit status
    Completed ... unsuccessful
    Total time taken: 4 secs



  • tina_anfaeng schrieb:

    Bibliothek -l/libboost_regex-gcc-1_32.a

    Der Schrägstrich ist zu viel. Muss heißen:

    -lboost_regex-gcc-1_32
    

    oder

    -l boost_regex-gcc-1_32
    

    Sonst sucht der gcc im Wurzelverzeichniss nach libboost_regex-gcc-1_32.a, also bei /libboost_regex-gcc-1_32.a...

    Edit: Das lib vor und das .a hinter und vor den Library-Namen entfehrnt (siehe unten)



  • Es ist zum aus der Haut fahren, aber es funktioniert trotzdem nicht. Ich habe den Paramet wie folgt gesetzt -llibboost_regex-gcc-1_32.a und erhalte trotzdem noch dieselbe Fehlermeldung... ;-(((

    Wie kann man gcc denn die Parameter direkt uebergeben? Vielleicht liegt es ja an Anjuta. Aber unter gcc --help finde ich nicht, wie ich die Include- und Bibliothekspfade als Parameter uebergeben kann.

    Danke Dir.

    Datei testprog_boost.cc wird generiert ...
    g++ -I/home/Kerstin/c++/regular_expressions/boost_1_32_0/boost_1_32_0 "testprog_boost.cc" -L/home/Kerstin/c++/regular_expressions/boost_1_32_0/boost_1_32_0/libs/regex/build/gcc/ -llibboost_regex-gcc-1_32.a -o "testprog_boost"
    /usr/lib/gcc-lib/i586-suse-linux/3.3.4/../../../../i586-suse-linux/bin/ld: cannot find -llibboost_regex-gcc-1_32.a
    collect2: ld returned 1 exit status
    Completed ... unsuccessful
    Total time taken: 4 secs



  • ProgChild schrieb:

    tina_anfaeng schrieb:

    Bibliothek -l/libboost_regex-gcc-1_32.a

    Der Schrägstrich ist zu viel. Muss heißen:

    -llibboost_regex-gcc-1_32.a
    

    oder

    -l libboost_regex-gcc-1_32.a
    

    Sonst sucht der gcc im Wurzelverzeichniss nach libboost_regex-gcc-1_32.a, also bei /libboost_regex-gcc-1_32.a...

    Das ist nicht alles... Wenn ich mich nicht irre, dann kannst du das lib und das .a auch weglassen. Ich bin mir aber nicht sicher, ob du das musst. Also:

    -lboost_regex-gcc-1_32
    


  • Du müsstest mit

    g++  -I/home/Kerstin/c++/regular_expressions/boost_1_32_0/boost_1_32_0 -c testprog_boost.cc
    g++ -L/home/Kerstin/c++/regular_expressions/boost_1_32_0/boost_1_32_0/libs/regex/build/gcc/ -lboost_regex-gcc-1_32 testprog_boost.o -o terstprog
    

    das Programm übersetzen müssen. Vorrausgesetzt, dass unter "/home/Kerstin/c++/regular_expressions/boost_1_32_0/boost_1_32_0/libs/regex/build/gcc/" die Datei libboost_regex-gcc-1_32.a oder/und libboost_regex-gcc-1_32.so liegt.



  • Yuchuuuh, es funktioniert!!! :-))))

    Wenn man das lib und .a weglässt! Darauf wäre ich nie gekommen!
    Tausend Dank für Deine Hilfe!


Anmelden zum Antworten