GNU/Linux >> Znalost Linux >  >> Linux

Zjistěte, zda je knihovna v cestě

ldconfig může vypsat všechny knihovny, ke kterým má přístup. Tyto knihovny jsou také uloženy v jeho mezipaměti.

/sbin/ldconfig -v -N prohledá všechny obvyklé cesty knihoven, zobrazí seznam všech dostupných knihoven, aniž by rekonstruoval mezipaměť (což není možné, pokud nejste uživatelem root). NEBERE v úvahu knihovny v LD_LIBRARY_PATH (na rozdíl od toho, co řekl tento příspěvek před úpravou), ale další knihovny můžete předat příkazovému řádku pomocí následujícího řádku:

/sbin/ldconfig -N -v $(sed 's/:/ /g' <<< $LD_LIBRARY_PATH)

Můžete sestavit jednoduchý testovací program s gcc a propojit svou knihovnu. Poté můžete zkontrolovat použité knihovny pomocí ldd. Používám něco takového:

echo "int main(){}" | gcc -x c++ -Wl,--no-as-needed -lmylib - && ldd a.out | grep mylib

-Wl,--no-as-needed zabraňuje linkeru zahodit knihovnu, protože nejsou použity žádné symboly z knihovny.


Globálně nahraďte (mezera) : s LD_LIBRARY_PATH

/sbin/ldconfig -N -v $(sed 's/:/ /g' <<< $LD_LIBRARY_PATH)

Linux
  1. Průvodce pochopením softwarových knihoven Linuxu v jazyce C

  2. Vymanit se z hledání, pokud selže -exec?

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

  1. Nemohu najít existující knihovnu

  2. Jak najdu umístění spustitelného souboru v C?

  3. Jak zjistím, jaké všechny symboly jsou exportovány ze sdíleného objektu?

  1. Linux zjistí Hyper-threaded core id

  2. Jak zjistit a zjistit, že je program v mrtvém bodě?

  3. Při instalaci Qt na linux nelze najít -lGL