Auflisten einiger Funktionen von Bibliotheken unter Linux?


0

Während ich einige Tests auf meinem Linux-Rechner durchführe, muss ich herausfinden, welche Funktionen zu einer Bibliothek gehören.

Ich habe den Bash-Befehl "ldconfig -p" verwendet, in dem einige Bibliotheken aufgelistet sind.

Aber wie listet man die Funktionen auf?


Was versuchst du zu machen? Dateien auflisten? Symbole in einer Bibliothek auflisten? Ein Symbol zur Laufzeit suchen?
— Attie

Es ist sehr wahrscheinlich, dass die Bibliothek, nach der Sie suchen, derzeit nicht auf Ihrem System verfügbar ist. Möglicherweise müssen Sie sie installieren.
— Attie

Es tut mir leid, dass ich etwas falsch verstanden habe, diese Bibliotheken waren keine Bibliotheken. Ja, ich muss die Symbole (Funktionen?) Einer Bibliothek auflisten, z. libc.
— Tech-IO

Antworten:


1

Benutzen objdump -tT ${FILE} oder readelf -s ${FILE}.

$ objdump -T /lib/x86_64-linux-gnu/libz.so.1

/lib/x86_64-linux-gnu/libz.so.1:     file format elf64-x86-64

DYNAMIC SYMBOL TABLE:
0000000000001c58 l    d  .init  0000000000000000              .init
0000000000000000      DF *UND*  0000000000000000  GLIBC_2.3.4 __snprintf_chk
0000000000000000      DF *UND*  0000000000000000  GLIBC_2.2.5 free
0000000000000000      DF *UND*  0000000000000000  GLIBC_2.2.5 __errno_location
0000000000000000  w   D  *UND*  0000000000000000              _ITM_deregisterTMCloneTable
0000000000000000      DF *UND*  0000000000000000  GLIBC_2.2.5 write
0000000000000000      DF *UND*  0000000000000000  GLIBC_2.2.5 strlen
0000000000000000      DF *UND*  0000000000000000  GLIBC_2.4   __stack_chk_fail
0000000000000000      DF *UND*  0000000000000000  GLIBC_2.2.5 snprintf
[...]
00000000000024c0 g    DF .text  00000000000000f9  ZLIB_1.2.2  adler32_combine
0000000000002ba0 g    DF .text  0000000000000005  ZLIB_1.2.3.3 crc32_combine64
0000000000010170 g    DF .text  0000000000000074  Base        gzdopen
0000000000000000 g    DO *ABS*  0000000000000000  ZLIB_1.2.7.1 ZLIB_1.2.7.1
0000000000000000 g    DO *ABS*  0000000000000000  ZLIB_1.2.3.3 ZLIB_1.2.3.3
000000000000c780 g    DF .text  0000000000000036  Base        inflateSyncPoint
00000000000104f0 g    DF .text  0000000000000059  ZLIB_1.2.3.5 gzoffset64
0000000000011160 g    DF .text  0000000000000005  ZLIB_1.2.5.2 gzgetc_
0000000000000000 g    DO *ABS*  0000000000000000  ZLIB_1.2.3.4 ZLIB_1.2.3.4
0000000000000000 g    DO *ABS*  0000000000000000  ZLIB_1.2.3.5 ZLIB_1.2.3.5
00000000000043a0 g    DF .text  00000000000000cd  ZLIB_1.2.5.2 deflateResetKeep
0000000000010550 g    DF .text  0000000000000005  ZLIB_1.2.3.5 gzoffset
000000000000fdd0 g    DF .text  0000000000000023  Base        gzclose
[...]

Im objdump Ausgabe von:

  • Beliebiges Symbol markiert *UND* in einer anderen Bibliothek ansässig ist ( dynamisch verknüpft )
    • zum Beispiel free, write, usw...
  • Jedes Symbol mit einem Abschnitt (z. B .: .init oder .text ) ist in dieser Bibliothek ansässig
    • zum Beispiel gzdopen, gzclose, usw...

Sie können verwenden ldd um herauszufinden, mit welchen Bibliotheken eine Binärdatei (ausführbare Datei oder Bibliothek) verknüpft ist:

$ ldd /lib/x86_64-linux-gnu/libz.so.1
        linux-vdso.so.1 =>  (0x00007ffc478f7000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f92da469000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f92daa4d000)
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.