dynamic lib bauen



  • Hallo,

    ich habe eine shared-lib gebaut, kann diese aber nicht mit dlopen() öffnen.

    Anscheinend kann man bei shared-libs auch zwischen dynamisch und nicht-dynamisch unterscheiden, richtig?

    Wie kann man dann eine dynamische shared-lib bauen?
    Alles was ich dazu gefunden habe ist -fPIC dem Compiler/Linker zu übergeben.

    Stimmt das?
    Das scheint bei mir nicht zu reichen, denn dlopen() packt's immer noch nicht.



  • Im Prinzip sollte es so funktionieren:

    `gcc -c -fpic *.c                # Source mit -fpic compilieren (reine Kompilation, kein Linken)

    gcc -shared -o libfoo.so *.o    # Shared library erstellen - ausgabe libfoo.so`



  • Hmm,

    vielleicht liegt das an der Makefile?
    (gross & komplex)

    CPPFLAGS += -fPIC
    CFLAGS += -fPIC

    Flags setzen scheint keinen Erfolg zu bringen.
    ldd libMy.so gibt "das Programm ist nicht dynamisch gelinkt" aus.

    Gibt es da sonst noch etwas zu beachten bei einer dynamischen Lib?
    Muessen da irgendwelche Funktionspointer gesetzt werden, oder so?



  • ok, ich konnte mein Problem lösen.

    Ich möchte trotzdem nochmal nachfragen: Es ist tatsächlich so, dass eine shared Lib nicht generell mit dlopen() lade-fähig ist, oder?
    Es gibt also dynamische shared Libs und nicht-dynamische shared Libs, stimmt's?



  • olpo schrieb:

    Flags setzen scheint keinen Erfolg zu bringen.
    ldd libMy.so gibt "das Programm ist nicht dynamisch gelinkt" aus.

    ldd gibt dir aus, von welchen dynamischen Bibliotheken deine Bibliothek abhängig ist.

    olpo schrieb:

    Es ist tatsächlich so, dass eine shared Lib nicht generell mit dlopen() lade-fähig ist, oder?
    Es gibt also dynamische shared Libs und nicht-dynamische shared Libs, stimmt's?

    Nein.


Log in to reply