Anzeige:
Ergebnis 1 bis 5 von 5

Thema: Herausfinden welche Funktion in welcher Lib ist

  1. #1
    Registrierter Benutzer
    Registriert seit
    21.10.2000
    Ort
    Köln
    Beiträge
    30

    Herausfinden welche Funktion in welcher Lib ist

    hi,

    ich hab unter AIX Probleme mit dem Binden von Programmen. Ich erhalte Fehlermeldungen das Symbole nicht aufgelöst werden können. Ich hab eine Grobe vermutung in welchen Libs die funktionen enthalten sein könnten. Nur fehlt es an den Mitteln (oder vieleicht wissen) in die Libs "hineinzukucken" mit ar erhalte ich nur die info aus was für .o Dateien die Lib gebaut wurde. Und strings ist auch nicht wirklich hilfreich, da auch Aufrufe als treffer ausgegeben werden.

    kennt jemand Tools für das Problem, bzw eine Möglichkeit an das Problem heranzugehen?

    thx
    Wenn was absolut nicht funktioniert nenn es Windows *gg*

  2. #2
    Registrierter Benutzer
    Registriert seit
    24.06.2003
    Beiträge
    486
    How to Match a Symbol with its Library
    If you're trying to link a program and get this kind of error:
    ld: Undefined symbol
    _xdr_reference
    *** Error code 2
    make: Fatal error: Command failed for target 'prog'
    Here's how you can locate the libraries with which you need to link. The basic plan
    is to use nm to look through the symbols in every library in /usr/lib, grepping for the
    symbols you're missing. The linker looks in /usr/ccs/lib and /usr/lib by default, and
    so should you. If this doesn't get results, extend your search to all other library
    directories (such as /usr/openwin/lib), too.
    % cd /usr/lib
    % foreach i (lib?*)
    ? echo $i
    ? nm $i | grep xdr_reference | grep -v UNDEF
    ? end
    libc.so
    libnsl.so
    [2491] | 217028| 196|FUNC |GLOB |0 |8
    |xdr_reference
    libposix4.so
    ...
    This runs "nm" on each library in the directory, to list the symbols known in the
    library. Pipe it through grep to limit it to the symbol you are searching for, and filter
    out symbols marked as "UNDEF" (referenced, but not defined in this library). The
    result shows you that xdr_reference is in libnsl. You need to add -lnsl on
    the end of the compiler command line.

  3. #3
    Registrierter Benutzer Avatar von SeeksTheMoon
    Registriert seit
    22.02.2002
    Beiträge
    762
    wenn er sagt welche Symbole das sind und Du unter aix das nm-Kommando hast, dann kannst Du der Lib auf die Pelle rücken; vorausgesetzt die Binaries sind nicht stripped.
    I haven't lost my mind - It's somewhere on a backup-disc

  4. #4
    Registrierter Benutzer
    Registriert seit
    29.02.2004
    Beiträge
    113
    Sorry, wenn ich so reinplatze, aber:
    Code:
    deever@floatkiller:~ $ nm /usr/lib/apache2/mod_mime.so 
    nm: /usr/lib/apache2/mod_mime.so: no symbols
    deever@floatkiller:~ $ ???
    Hmm?
    Wie kann denn der Indianer die Module überhaupt laden, so ohne Symbole? Nackt mit gehäuteter Katze 7x um eine vom Blitz zerstörte Eiche herumtanzen oder was?

    Gruß (& SCNR),
    dev

  5. #5
    Registrierter Benutzer
    Registriert seit
    17.07.2002
    Beiträge
    9
    @ Deever

    Du musst nm noch die Option -D übergeben:
    Code:
           -D
           --dynamic
               Display the dynamic symbols rather than the normal  symbols.   This
               is  only  meaningful  for dynamic objects, such as certain types of
               shared libraries.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •