Linker-Problem? undefined symbol zur Laufzeit [gelöst]



  • Moin, hoffe mal das ist das richtige Forum, ist ja an sich kein STL-Problem...

    Und zwar habe ich ein C++-Projekt das bis vorgestern einwandfrei lief. Nun schmiert das Programm mit dem Hinweis ab (bei einer bestimmten Aktion):

    ./meinProgramm: symbol lookup error: ./meinProgramm: undefined symbol: functionX

    Nun, bin etwas verwundert, denn das Linken klappt einwandfrei ohne jegliches Meckern. Die functionX ist in einer C-Library definiert etc. und auch mit extern "C" umgeben. Laut "nm" ist die Funktion auch drin in dem .a-File:
    U functionX
    000026ce T functionX

    Nach dem Linken mit dem Programm allerdings sagt nm folgendes:
    U functionX

    Da rein gar nichts verändert wurde verwundert mich dies ein wenig. Komplettes Aufräumen und neubuilden hat rein gar nichts verändert, das Problem bleibt bestehen. Ein ldd -d -r meinProgramm bringt:

    undefined symbol: functionM (/libPath/eineLib.so)
    undefined symbol: functionN (/libPath/eineLib.so)
    undefined symbol: functionX (./meinProgramm)
    undefined symbol: functionY (./meinProgramm)
    undefined symbol: functionZ (./meinProgramm)

    alles Funktionen aus eben der C-Library. Auch das neue Erstellen der .so hat rein gar nichts gebracht (functionM und N nutzen X und Z nutzt Y).

    Hat da jemand Erfahrungen mit? Werde hier noch bekloppt...



  • Merkwürdigerweise gehen einige Funktionen der Lib und andere nicht. Das macht in meinen Augen überhaupt keinen Sinn. 😞



  • Okay, Problem gelöst.

    Eine Entschlackung von "meinProgramm" hat dazu geführt das aus der lib nur Teile gelinkt wurden und so Object-Files ignoriert wurden die für eine SO benötigt wurden.

    Naja, immerhin wieder ein paar nette Tools kennengelernt, also doch was gelernt. 😉


Log in to reply