GNU/Linux >> Znalost Linux >  >> Linux

Jak zobrazím seznam funkcí, které exportuje sdílená knihovna Linuxu?

Na MAC musíte použít nm *.o | c++filt , protože neexistuje žádný -C možnost v nm .


Co potřebujete, je nm a jeho -D možnost:

$ nm -D /usr/lib/libopenal.so.1
.
.
.
00012ea0 T alcSetThreadContext
000140f0 T alcSuspendContext
         U atanf
         U calloc
.
.
.

Exportované sumboly jsou označeny T . Požadované symboly, které musí být načteny z jiných sdílených objektů, mají U . Všimněte si, že tabulka symbolů nezahrnuje pouze funkce, ale také exportované proměnné.

Viz nm manuálová stránka pro více informací.


Mezi další již zmíněné nástroje můžete využít i readelf (manuál). Je podobný objdump ale jde více do detailů. Vysvětlení rozdílu naleznete zde.

$ readelf -sW /lib/liblzma.so.5 |head -n10

Symbol table '.dynsym' contains 128 entries:
   Num:    Value  Size Type    Bind   Vis      Ndx Name
     0: 00000000     0 NOTYPE  LOCAL  DEFAULT  UND
     1: 00000000     0 FUNC    GLOBAL DEFAULT  UND [email protected]_2.0 (4)
     2: 00000000     0 FUNC    GLOBAL DEFAULT  UND [email protected]_2.0 (4)
     3: 00000000     0 NOTYPE  WEAK   DEFAULT  UND _ITM_deregisterTMCloneTable
     4: 00000000     0 FUNC    GLOBAL DEFAULT  UND [email protected]_2.0 (5)
     5: 00000000     0 FUNC    GLOBAL DEFAULT  UND [email protected]_2.0 (5)
     6: 00000000     0 FUNC    GLOBAL DEFAULT  UND [email protected]_2.0 (5)

objdump -T *.so může také dělat práci


Linux
  1. Jak změnit výchozí prostředí v Linuxu

  2. Jak změnit výchozí shell v Linuxu

  3. Jak udělat verzování sdílené knihovny v Linuxu?

  1. Jak nastavit googleTest jako sdílenou knihovnu v Linuxu

  2. Dvě verze pythonu na linuxu. jak nastavit 2.7 jako výchozí

  3. Jak vytvořit zpoždění sdílené knihovny načtené v systému Linux

  1. Jak vypsat seznam závislostí balíčku v Linuxu

  2. Úvod do sdílených knihoven Linuxu (Jak vytvořit sdílené knihovny)

  3. Jak inicializovat sdílenou knihovnu v Linuxu