STLPort und G++ linker error



  • Hi Leute - ich bins schon wieder.

    Also - ich versuche mit der STLPort meinen Source im G++ zu compilen. Nur scheint das irgendwie nicht hinzuhauen. Wenn ich die Lib linken will, dann meint er er findet das File nicht.

    Sie sind alle unter /usr/lib zu finden.

    Nun habe ich versucht jedes einzelne File nacheinander zu linken, nur damit es vielleicht doch funktioniert. Egal ob mit der Option -l oder -lz.
    Das Verzeichniss habe ich mit -L/usr/lib angebenben. Mal mit und mal ohne Endung. Bloß anscheinend bin ich zu doof für.

    Das Makefile sieht folgendermaßen aus:

    CXX = g++ -g -I/usr/include/stlport -L/usr/lib -llibstlport_gcc.a
    
    all: main.o
         $(CXX) -o main main.o
    
    clear:
         rm main.o
    

    Ohne die STL Port läufts, nur möchte ich diese eben verwenden.
    Hat jemand eine Idee?

    DANKE
    Sven



  • Weiß es keiner, oder hab ich die Frage falsch gestellt?
    P.S. ich habe die ganzen alten Threads zum Thema linken durchgelesen. Andere Sachen, wie die SDL usw. kann ich auch ohne Probleme linken.



  • mein gibt bei -l auch nicht den kompletten Dateinamen an

    http://gcc.gnu.org/onlinedocs/gcc-3.3/gcc/Link-Options.html#Link%20Options



  • ist aber ein GCC Problem und kein Unix Problem und gehört deswegen nach andere Compiler



  • Ich habs mit und ohne Endung Probiert.
    Genauso wie Abkürzungen des Namens wie libstlport, libstlport_gcc usw.

    Ach ja - auf der GCC Manpage, die du mir gerade genannt hast, hab ich schon einige Zeit verbracht. Allerdings hab ich immer noch nicht rausgefunden, wo der Unterschied zwischen l und lz ist.

    Der Satz heißt ja:
    It makes a difference where in the command you write this option; the linker searches and processes libraries and object files in the order they are specified. Thus, foo.o -lz bar.o searches library z after file foo.o but before bar.o. If bar.o refers to functions in z, those functions may not be loaded.

    [ Dieser Beitrag wurde am 26.05.2003 um 14:24 Uhr von SnorreDev editiert. ]



  • du hast einfach das Manual falsch gelesen

    Thus, foo.o -lz bar.o searches library z after file foo.o but before bar.o

    -lz linked einfach die libz.a dazu

    The linker searches a standard list of directories for the library, which is actually a file named liblibrary.a. The linker then uses this file as if it had been specified precisely by name.

    wenn man eine library libz.a hat, dann ist die Option nicht -llibz.a oder -libz.a oä. sondern einfach -lz

    The only difference between using an -l option and specifying a file name is that -l surrounds library with lib and .a and searches several directories.



  • *klonk* - Das war aber ein großes Brett 😃

    Danke Kingruedi


Anmelden zum Antworten