Di Windows, EXE dan DLL memiliki info versi, termasuk setidaknya bidang berikut:
- versi file
- versi produk
- nama internal
- nama Produk
- hak cipta
Di Linux Library / Executable:
- Bidang mana yang ada?
- Bagaimana cara melihat info tersebut?
- Alat / perpustakaan apa yang harus dibaca?
executable
libraries
version
linquize
sumber
sumber
/sbin/ldconfig -p
Jawaban:
Info versi di tidak secara eksplisit disimpan dalam file ELF . Apa yang Anda miliki di sana adalah nama perpustakaan
soname
, yang mencakup versi utama. Versi lengkap biasanya disimpan sebagai bagian dari nama file perpustakaan.Jika Anda memiliki perpustakaan, katakanlah
libtest.so
, maka biasanya Anda memiliki:libtest.so.1.0.1
- File perpustakaan itu sendiri, berisi versi lengkaplibtest.so.1
- Symlink tolibtest.so.1.0.1
, memiliki nama yang sama dengansoname
libtest.so
- Symlink untuklibtest.so.1
digunakan untuk menghubungkan.Dalam file perpustakaan
libtest.so.1.0.1
, akan ada entri yang disebutSONAME
di bagian dinamis, yang akan mengatakan perpustakaan ini disebutlibtest.so.1
. Saat Anda menautkan program ke perpustakaan ini, program yang ditautkan akan menyimpansoname
perpustakaan di bawahNEEDED
entri di bagian dinamis.Jika Anda ingin memverifikasi, apa sebenarnya file ELF itu, Anda dapat mencoba menjalankannya:
di mana
elffile
bisa berupa perpustakaan yang dapat dieksekusi.Jika Anda hanya ingin mendapatkan versi pustaka, Anda dapat bermain dengan:
AFAIK, tidak ada info seperti itu (setidaknya tidak secara default) dalam file yang dapat dieksekusi.
Atau Anda dapat mengandalkan program itu sendiri atau sistem pengemasan Anda, seperti yang ditulis Rahul Patil.
sumber
Anda dapat menggunakan
ldconfig -v | grep libraryname
, juga perintah memiliki opsicommand -V
ataubinaryfile --version
contoh:
Anda juga dapat menggunakan yum atau aptitude berdasarkan distro yang Anda gunakan misalnya.
di RHEL5 / CENTOS5 / Fedora Anda dapat menggunakan
yum info packagename
atau jika diinstal kemudian gunakanrpm --version packagename
Di Ubuntu, Anda dapat menggunakan
aptitude show pkgname
ataudpkg --version pkgname
sumber
rpm
, saya pikir Anda akan inginrpm --query pkgname
membuat daftar versi string (rpm --version
akan mencetak versirpm
sendiri; hal yang sama mungkin berlaku untukdpkg
)Untuk sistem berbasis Redhat, lakukan ini:
Periksa file paket yang diperlukan, pastikan tidak ada nama jalur di nama file perpustakaan. Jika demikian hapus, jadi "/bin/lib/libx.so.1" ubah menjadi "libx.so.1"
Cari tahu paket apa yang berisi perpustakaan
Atau letakkan ini di skrip atau jalankan dari cmd line:
Selanjutnya, buat skrip berikut atau jalankan dari cmd line:
Anda sudah selesai, jalankan program Anda. Jika Anda mendapatkan kesalahan GUI saat menjalankan. Salin ke bawah dan jika itu adalah referensi perpustakaan, temukan paket untuk itu dan instal dengan cara yang sama.
sumber
Jalankan ini untuk mendapatkan informasi versi -
strings libssl.so.1.0.0 | grep "1\.0"
sumber