GNU/Linux >> Znalost Linux >  >> Linux

Jak určíte umístění knihoven do binárního souboru? (linux)

Pro jednorázové nastavení nastavte proměnnou LD_LIBRARY_PATH na seznam adresářů k vyhledávání oddělených dvojtečkou. To je analogické s PATH pro spustitelné soubory, kromě toho, že standardní systémové adresáře jsou navíc prohledávány po adresářích specifikovaných prostřednictvím prostředí.

LD_LIBRARY_PATH=/usr/local/lib64 ./cart5

Pokud máte program, který uchovává knihovny na nestandardním místě a není schopen je sám najít, můžete napsat obalový skript:

#!/bin/sh
if [ -n "$LD_LIBRARY_PATH" ]; then
  LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib64
else
  LD_LIBRARY_PATH=/usr/local/lib64
fi
export LD_LIBRARY_PATH
exec /path/to/cart5 "[email protected]"

Seznam standardních systémových adresářů je veden v /etc/ld.so.conf . Nejnovější systémy umožňují, aby tento soubor zahrnoval další soubory; pokud vaše obsahuje něco jako include /etc/ld.so.conf.d/*.conf , vytvořte nový soubor s názvem /etc/ld.so.conf.d/mala.conf obsahující adresáře, které chcete přidat. Po změně /etc/ld.so.conf nebo zahrnutý soubor, spusťte /sbin/ldconfig aby se vaše změny projevily (toto aktualizuje mezipaměť).

(LD_LIBRARY_PATH platí také pro mnoho dalších unices, včetně FreeBSD, NetBSD, OpenBSD, Solaris a Tru64. HP-UX má SHLIB_PATH a Mac OS X má DYLD_LIBRARY_PATH . /etc/ld.so.conf má analogy na většině unices, ale umístění a syntaxe se výrazně liší.)


Pokud se chcete vyhnout LD_LIBRARY_PATH, můžete to udělat také během propojování:

gcc -o exename -L/path/to/dynamiclib/ -lnameofLib \
    -Wl,-R/path/to/dynamiclib/ sourceCode1.c ...

-Wl,... se používá k předání dalších příkazů linkeru a v tomto případě pomocí -R říkáte linkeru, aby uložil tuto cestu jako "výchozí vyhledávací cestu" pro .so.

Uchovávám si poznámky o mnoha malých tipech, jako je tento, na svých stránkách:

https://www.thanassis.space/tricks.html


Linux
  1. Jak programově nastavíte hardwarové hodiny v Linuxu?

  2. Jak můžete identifikovat čipovou sadu USB zařízení v Linuxu?

  3. Jak můžete určit nainstalované verze knihoven glibc?

  1. Jak používat Linuxový příkaz grep

  2. Jak se Linux dostal k sálovému počítači

  3. Jak rozebrat binární spustitelný soubor v Linuxu, abyste získali kód sestavení?

  1. Jak používat příkaz historie v Linuxu

  2. Jak používat příkaz historie Linuxu

  3. Jak používáte regulární výrazy s příkazem cp v Linuxu?