eigene Libary einbinden



  • Hi,
    ich kann leider die Libarys nicht einbinden, dabei sind die Ordner in Linux.def angegeben

    ARCH_INC = -I/home/src/.../lib -I/home/lib

    ARCH_LIB = -lpng -lasd -lwer -ldeg -lordner1 -lordner2

    die ersten Libaries werden gefunden, die letzten beiden (im 2.Ordner) nicht?

    Kann mir da jemand weiterhelfen?



  • Für Library-Pfade brauchst Du nicht -I sondern -L. Die Option "-I" ist für die Header-Suchpfade.



  • Dieser Thread wurde von Moderator/in nman aus dem Forum Linux/Unix in das Forum Compiler- und IDE-Forum verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Es tut mir leid. In der Zeile steht auch ursprünglich ein -L nicht -I,
    Aber trotzdem danke für den Hinweis



  • Du brauchst "-L" für die Ordnerpfade und "-l" für die tatsächlichen Libraries.

    Also sowas in der Art:
    Im Verzeichnis /foo/bar/ liegt die Datei libasound.so

    Deine Flags: "-L/foo/bar -lasound".

    Das muss gehen, wenn nicht, zeig mal Deine Fehlermeldung.



  • Linux.de:
    #Platform dependent makefile
    #Project: pnetz3kombi
    #C Compiler and Flags
    CC = gcc
    CFLAGS = -DGCC3 -g -DGCC3 -Df2cFortran -DXML_TEST -DOHNE_MYSQL -O3 -finline-functions -Wall
    #C++ Compiler and Flags
    CXX = c++
    CPPFLAGS = -Df2cFortran -DGCC3 -DXML_TEST -DOHNE_MYSQL -g -DGCC3 -Df2cFortran -DXML_TEST -DOHNE_MYSQL -O3 -finline-functions -Wall
    CPPSPECIALFLAGS = -DOHNE_MYSQL
    DEPENDFLAGS = -MM $(CPPFLAGS)
    PIC = -fPIC
    MOC =
    # Fortran compiler and flags
    FORTRANC = g77
    FORTRAN_CFLAGS = -O -g -DGCC3 -Df2cFortran -DXML_TEST -DOHNE_MYSQL -O3 -finline-functions -Wall
    # linker for all object files (C, C++, Fortran)
    LINK = $(CXX)
    # static library
    ARFLAGS = -ruv
    RANLIB = ranlib
    # builds shared library; $(SHARED_LIB) defined in Makefile
    SHARED_LINK = (LINK)sharedWl,soname,(LINK) -shared -Wl,-soname,(SHARED_LIB).$(SHLIB_MAJOR)
    # include path and library settings for C, C++, Fortran
    ARCH_INC =
    # add other linker flags here, i.e. -L/usr/local/lib
    ARCH_LDFLAGS = -L/home/sp936399/src/lib -L/home/sp936399/lib
    # add other libraries here, i.e. -liostream
    ARCH_LIB = -libumflib -libgenalg3 -libgrafik3 -liballgemein -libumfpack -lamd -lmst -lpng -lz -lg2c -lm

    Fehler:
    /usr/bin/ld: cannot find -libumflib
    collect2: ld returned 1 exit status

    und ich kann usr/bin/ld nirgendwo mit grep finden.
    und libumflib liegt in ../lib



  • Und wie heißen Deine Libs? (Dateinamen wären hilfreich.)

    Normalerweise: "libfoobar.so" -> gelinkt mit "-lfoobar", _nicht_ mit "-libfoobar".



  • Die Libaries in ../lib/
    -rwxr-xr-x 1 sp936399 sp936399 20999275 Dec 5 10:40 libdesire3.so
    -rwxr-xr-x 1 sp936399 sp936399 20999275 Dec 5 10:40 libdesire3.so.0
    -rwxr-xr-x 1 sp936399 sp936399 20999275 Dec 5 10:40 libdesire3.so.0.1
    -rwxr-xr-x 1 sp936399 sp936399 1156075 Dec 5 10:40 libdesire_io.so
    -rwxr-xr-x 1 sp936399 sp936399 1156075 Dec 5 10:40 libdesire_io.so.0
    -rwxr-xr-x 1 sp936399 sp936399 1156075 Dec 5 10:40 libdesire_io.so.0.1
    -rwxr-xr-x 1 sp936399 sp936399 3233096 Dec 5 10:40 libgrafik3.so
    -rwxr-xr-x 1 sp936399 sp936399 3233096 Dec 5 10:40 libgrafik3.so.0
    -rwxr-xr-x 1 sp936399 sp936399 3233096 Dec 5 10:40 libgrafik3.so.0.1
    -rwxr-xr-x 1 sp936399 sp936399 469347 Dec 5 10:40 libmst.so
    -rwxr-xr-x 1 sp936399 sp936399 469347 Dec 5 10:40 libmst.so.0
    -rwxr-xr-x 1 sp936399 sp936399 469347 Dec 5 10:40 libmst.so.0.1
    -rwxr-xr-x 1 sp936399 sp936399 2395759 Dec 5 10:40 libnetzberechnung.so
    -rwxr-xr-x 1 sp936399 sp936399 2395759 Dec 5 10:40 libnetzberechnung.so.0
    -rwxr-xr-x 1 sp936399 sp936399 2395759 Dec 5 10:40 libnetzberechnung.so.0.1
    -rwxr-xr-x 1 sp936399 sp936399 81046074 Dec 5 10:40 libpnetz3kombi.so
    -rwxr-xr-x 1 sp936399 sp936399 81046074 Dec 5 10:40 libpnetz3kombi.so.0
    -rwxr-xr-x 1 sp936399 sp936399 81046074 Dec 5 10:40 libpnetz3kombi.so.0.1
    -rwxr-xr-x 1 sp936399 sp936399 66978 Dec 5 10:40 libz.so
    -rwxr-xr-x 1 sp936399 sp936399 66978 Dec 5 10:40 libz.so.0
    -rwxr-xr-x 1 sp936399 sp936399 66978 Dec 5 10:40 libz.so.0.1
    -rwxr-xr-x 1 sp936399 sp936399 66978 Dec 5 10:40 libz.so.1



  • Das übersehen, Matt?:

    nman schrieb:

    Normalerweise: "libfoobar.so" -> gelinkt mit "-lfoobar", _nicht_ mit "-libfoobar".



  • Das habe ich leider übersehen, Danke.
    Kann mir nur einer erklären, warum die Zeiger in/usr/bin/ld definiert werden? Kann ich diese Datei irgendwo festlegen, oder
    ihm direkt sagen, wo die Bibliotheken sind? Ausgabe am Ende des Kompilieren:

    Danke nochmal an alle!!!


Anmelden zum Antworten