Dengan asumsi saya ingin menguji apakah perpustakaan diinstal dan dapat digunakan oleh suatu program. Saya dapat menggunakan ldconfig -p | grep mylib
untuk mencari tahu apakah itu diinstal pada sistem. tetapi bagaimana jika perpustakaan hanya diketahui melalui pengaturan LD_LIBRARY_PATH
?
Jika demikian, program mungkin dapat menemukan perpustakaan, tetapi ldconfig
tidak akan. Bagaimana saya bisa memeriksa apakah perpustakaan ada di jalur tautan gabungan ?
Saya akan menambahkan bahwa saya sedang mencari solusi yang akan berfungsi bahkan jika saya tidak benar-benar memiliki program yang ada (misalnya program belum dikompilasi), saya hanya ingin tahu bahwa ada perpustakaan tertentu di ld
' jalan.
linux
dynamic-linking
ld
nbubis
sumber
sumber
ldd <binary>
untuk memeriksa apakah semua perpustakaan yang terhubung ada di jalur. Mungkin ada cara yang lebih elegan.ldd
melayani tujuan ini dengan tepat.LIBRARY_PATH
variabel lingkungan yang dicari misalnya olehgcc
kompiler. TheLIBRARY_PATH
variabel lingkungan juga memiliki daftar usus dipisahkan dari direktori.Jawaban:
ldconfig
dapat membuat daftar semua perpustakaan yang memiliki akses. Perpustakaan ini juga disimpan dalam cache-nya./sbin/ldconfig -v -N
akan merayapi semua jalur pustaka yang biasa, daftar semua pustaka yang tersedia, tanpa merekonstruksi cache (yang tidak mungkin jika Anda pengguna non-root). Ini TIDAK memperhitungkan perpustakaan akun di LD_LIBRARY_PATH (bertentangan dengan apa yang dikatakan oleh posting ini sebelum diedit) tetapi Anda dapat meneruskan perpustakaan tambahan ke baris perintah dengan menggunakan baris di bawah ini:sumber
ldconfig
tidak portabel karena hanya berlaku untuk implementasi yang didasarkan padaa.out
penghubung dinamis berbasis SunOS-4.0 dari tahun 1987./sbin/ldconfig -N -v $(sed 's/:/ /' <<< $LD_LIBRARY_PATH)
tidak terlalu banyak membunuh terlalu banyak untuk seleraku.ldconfig
dalam perjanjian dengan AT&T karena caching linker terlalu sensitif terhadap kesalahan. Sun kemudian menambahkanthe tree stooges
:moe
,lari
dancrle
sebagai program pembantu untuk manajemen ELF.Pengganti global (spasi)
:
dengan dengan LD_LIBRARY_PATHsumber
Anda dapat menyusun program pengujian sederhana dengan gcc dan menautkan perpustakaan Anda. Kemudian Anda dapat memeriksa pustaka yang digunakan dengan ldd. Saya menggunakan sesuatu seperti ini:
-Wl,--no-as-needed
mencegah tautan menghapus perpustakaan, karena tidak ada simbol dari perpustakaan yang digunakan.sumber