GNU/Linux >> Linux Esercitazione >  >> Linux

Come si specifica la posizione delle librerie in un file binario? (linux)

Per una volta sola, imposta la variabile LD_LIBRARY_PATH a un elenco di directory separate da due punti in cui eseguire la ricerca. Questo è analogo a PATH per gli eseguibili, tranne per il fatto che le directory di sistema standard vengono ulteriormente cercate dopo quelle specificate attraverso l'ambiente.

LD_LIBRARY_PATH=/usr/local/lib64 ./cart5

Se hai un programma che mantiene le librerie in una posizione non standard e non è in grado di trovarle da solo, puoi scrivere uno script wrapper:

#!/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]"

L'elenco delle directory di sistema standard è conservato in /etc/ld.so.conf . I sistemi recenti consentono a questo file di includere altri file; se il tuo contiene qualcosa come include /etc/ld.so.conf.d/*.conf , crea un nuovo file chiamato /etc/ld.so.conf.d/mala.conf contenente le directory che si desidera aggiungere. Dopo aver modificato /etc/ld.so.conf o un file incluso, esegui /sbin/ldconfig affinché le modifiche abbiano effetto (questo aggiorna una cache).

(LD_LIBRARY_PATH si applica anche a molti altri unix, inclusi FreeBSD, NetBSD, OpenBSD, Solaris e Tru64. HP-UX ha SHLIB_PATH e Mac OS X ha DYLD_LIBRARY_PATH . /etc/ld.so.conf ha analoghi sulla maggior parte degli unice ma la posizione e la sintassi differiscono maggiormente.)


Se vuoi evitare LD_LIBRARY_PATH, puoi anche farlo, durante il collegamento:

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

Il -Wl,... è usato per passare comandi extra al linker, e in questo caso, con -R dici al linker di memorizzare questo percorso come "percorso di ricerca predefinito" per .so.

Prendo nota di tanti piccoli consigli come questo, sul mio sito:

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


Linux
  1. Come usare il comando Linux grep

  2. Come usare il comando cronologia in Linux

  3. Come Linux è arrivato al mainframe

  4. Come si imposta a livello di codice l'orologio hardware su Linux?

  5. Come si usano le espressioni regolari con il comando cp in Linux?

Come ottenere la dimensione di una directory in Linux

Come controllare la versione del kernel in Linux

Come controllare la complessità della password in Linux

Come elencare i membri di un gruppo in Linux

Come controllare il runlevel in Linux

Come personalizzare il comando top di Linux