GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Anda menentukan lokasi perpustakaan ke biner? (linux)

Untuk sekali saja, atur variabel LD_LIBRARY_PATH ke daftar direktori yang dipisahkan titik dua untuk dicari. Ini analog dengan PATH untuk yang dapat dieksekusi, kecuali bahwa direktori sistem standar juga dicari setelah yang ditentukan melalui lingkungan.

LD_LIBRARY_PATH=/usr/local/lib64 ./cart5

Jika Anda memiliki program yang menyimpan pustaka di lokasi yang tidak standar dan tidak dapat menemukannya sendiri, Anda dapat menulis skrip pembungkus:

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

Daftar direktori sistem standar disimpan di /etc/ld.so.conf . Sistem terkini mengizinkan file ini untuk menyertakan file lain; jika milik Anda berisi sesuatu seperti include /etc/ld.so.conf.d/*.conf , buat file baru bernama /etc/ld.so.conf.d/mala.conf berisi direktori yang ingin Anda tambahkan. Setelah Anda mengubah /etc/ld.so.conf atau file yang disertakan, jalankan /sbin/ldconfig agar perubahan Anda diterapkan (ini memperbarui cache).

(LD_LIBRARY_PATH juga berlaku untuk banyak penyatuan lainnya, termasuk FreeBSD, NetBSD, OpenBSD, Solaris dan Tru64. HP-UX memiliki SHLIB_PATH dan Mac OS X memiliki DYLD_LIBRARY_PATH . /etc/ld.so.conf memiliki analog di sebagian besar uni tetapi lokasi dan sintaks berbeda lebih luas.)


Jika ingin menghindari LD_LIBRARY_PATH, Anda juga dapat melakukan ini, selama menautkan:

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

-Wl,... digunakan untuk meneruskan perintah tambahan ke linker, dan dalam hal ini, dengan -R Anda memberi tahu linker untuk menyimpan jalur ini sebagai "jalur pencarian default" untuk .so.

Saya mencatat banyak kiat kecil seperti ini, di situs saya:

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


Linux
  1. Bagaimana Anda bisa mengidentifikasi chipset perangkat usb di Linux?

  2. Bagaimana Anda bisa menentukan versi terinstal dari pustaka glibc?

  3. Bagaimana cara membongkar biner yang dapat dieksekusi di Linux untuk mendapatkan kode perakitan?

  1. Cara menggunakan perintah grep Linux

  2. Cara menggunakan perintah history di Linux

  3. Bagaimana Anda menggunakan ekspresi reguler dengan perintah cp di Linux?

  1. Bagaimana Linux datang ke mainframe

  2. Cara Menggunakan Perintah sejarah Linux

  3. Bagaimana Anda Secara Terprogram Mengatur Jam Perangkat Keras di Linux?