GNU/Linux >> Belajar Linux >  >> Ubuntu

Cara Mengatasi Kesalahan "tidak dapat membuka file objek bersama" di Distribusi Linux berbasis Ubuntu

Ada daftar kesalahan umum yang sering saya lihat di Ubuntu. Ada masalah dengan merge list, lalu ada BADSIG error, dan sejumlah kesalahan pembaruan Ubuntu yang umum.

Salah satu kesalahan umum yang sering saya lihat saat menginstal program dari kode sumbernya adalah kesalahan saat memuat pustaka bersama . Kesalahan lengkap umumnya terlihat seperti ini:

kesalahan saat memuat pustaka bersama:
tidak dapat membuka file objek bersama:Tidak ada file atau direktori seperti itu

Misalnya, saya mencoba menggunakan server FreeRADIUS dan menunjukkan kesalahan ini:

radiusd: error while loading shared libraries:
libfreeradius-radius-2.1.10.so:
cannot open shared object file: No such file or directory

Alasan di balik kesalahan ini adalah bahwa pustaka program telah diinstal di tempat di mana tautan dinamis tidak dapat menemukannya.

Mari saya tunjukkan bagaimana Anda dapat memperbaiki masalah ini.

Perbaiki ing 'tidak dapat membuka file objek bersama:Tidak ada kesalahan file atau direktori'

Salah satu cara cepat untuk memperbaiki “kesalahan saat memuat pustaka bersama” ini secara otomatis adalah dengan menggunakan ldconfig.

Yang perlu Anda lakukan adalah membuka terminal (Ctrl+Alt+T) dan ketik perintah berikut:

sudo /sbin/ldconfig -v

Liner yang satu ini harus menyelesaikan masalah dalam banyak kasus. Namun, jika tidak, saya telah membahas metode lain untuk menangani kesalahan ini. Tetapi sebelum itu, izinkan saya memberi tahu Anda apa yang dilakukan perintah di atas.

Apa itu file objek bersama? Bagaimana perintah di atas memperbaiki masalah?

Anda lihat, di C/C++, .so (objek bersama) adalah file pustaka yang dikompilasi. Disebut objek bersama karena file perpustakaan ini dapat digunakan bersama oleh beberapa program. Pustaka yang dihasilkan ini biasanya terletak di direktori /lib atau /usr/lib.

Sekarang jika Anda bertanya-tanya bagaimana perintah kecil ini memperbaiki masalah ini, Anda harus membaca halaman manual ldconfig yang berbunyi:

ldconfig membuat tautan dan cache yang diperlukan ke pustaka bersama terbaru yang ditemukan di direktori yang ditentukan pada baris perintah, dalam file /etc/ld.so.conf , dan di direktori tepercaya (/lib dan /usr/lib ). Cache digunakan oleh run-time linker, ld.so atau ld-linux.so . ldconfig memeriksa header dan nama file perpustakaan yang ditemuinya saat menentukan versi mana yang tautannya harus diperbarui.

Saya harap perbaikan cepat ini membantu Anda menghilangkan kesalahan buruk saat memuat pesan perpustakaan bersama di Ubuntu dan Linux lainnya.

Jika tidak, Anda dapat melakukan penyelidikan dan mencoba memperbaiki masalah seperti yang disebutkan di bagian berikutnya.

Metode alternatif untuk memperbaiki kesalahan 'tidak dapat membuka file objek bersama'

Metode yang dibahas di atas memperbaiki masalah jika perpustakaan yang dimaksud tersedia di sistem Anda. Tapi mungkin tidak selalu demikian.

Jika Anda tidak menginstal program di sistem Anda, Anda tidak akan memiliki file library-nya. Ldconfig tidak dapat melakukan apa pun jika tidak ada file library.

Jadi, metode alternatifnya adalah menginstal program yang diperlukan dan itu akan membuat perpustakaan secara otomatis.

Mari saya tunjukkan kepada Anda dengan sebuah contoh. Katakanlah Anda melihat kesalahan ini:

error while loading shared libraries: libgobject-2.0.so.0: cannot open shared object file: No such file or directory

Masalahnya adalah dengan libgobject versi 2.0. Nomor versi penting karena beberapa program bergantung pada versi perpustakaan tertentu dan jika tidak menemukannya, mereka akan mengeluhkannya.

Sekarang, apt menyediakan opsi pencarian yang dapat digunakan untuk mencari paket dan mengetahui versinya sebelum menginstalnya.

[email protected]:~$ apt search libgobject
Sorting... Done
Full Text Search... Done
librust-gobject-sys-dev/focal 0.9.0-2 amd64
  FFI bindings to libgobject-2.0 - Rust source code

Sekarang, paket librust-gobject-sys-dev ini bisa menjadi apa yang Anda butuhkan jika Anda tahu bahwa Anda mencoba menjalankan program Rust. Tetapi bagaimana jika itu adalah program Python yang Anda jalankan yang mengeluhkannya?

Anda dapat memperluas pencarian Anda dengan menghapus lib dari nama paket saat mencari. Lib menandakan perpustakaan dan perpustakaan dapat disediakan oleh paket generik yang bisa diberi nama gobject-xyz.

Sebaiknya cari string dalam nama paket (bukan deskripsi) untuk mendapatkan hasil yang lebih ringkas.

[email protected]:~$ apt search --names-only gobject
Sorting... Done
Full Text Search... Done
gobject-introspection/focal-updates 1.64.1-1~ubuntu20.04.1 amd64
  Generate interface introspection data for GObject libraries

libavahi-gobject-dev/focal 0.7-4ubuntu7 amd64
  Development headers for the Avahi GObject library

libavahi-gobject0/focal 0.7-4ubuntu7 amd64
  Avahi GObject library

libcairo-gobject-perl/focal,now 1.005-2 amd64 [installed,automatic]
  integrate Cairo into the Glib type system in Perl

libcairo-gobject2/focal,now 1.16.0-4ubuntu1 amd64 [installed,automatic]
  Cairo 2D vector graphics library (GObject library)

libghc-gi-gobject-dev/focal 2.0.19-1build1 amd64
  GObject bindings

libghc-gi-gobject-doc/focal,focal 2.0.19-1build1 all
  GObject bindings; documentation

Dalam output terpotong di atas, Anda harus melihat apakah paket tersebut terkait dengan program asli yang Anda coba jalankan. Anda juga harus memeriksa versi perpustakaan yang disediakan.

Setelah Anda mengidentifikasi paket yang benar, instal seperti ini:

sudo apt install package_name

Setelah diinstal, Anda dapat menjalankan perintah ldconfig lagi untuk memperbarui cache:

sudo /sbin/ldconfig -v

Metode ini memerlukan beberapa upaya di pihak Anda, tetapi beginilah cara menangani dependensi.

Tidak ada yang berhasil, apa sekarang?

Jika Anda cukup malang, metode di atas mungkin tidak berhasil untuk Anda. Apa yang bisa kamu lakukan?

Pertama, perlu diingat bahwa pustaka bersama dapat digunakan dari paket lain dalam beberapa kasus. Jika Anda mencoba menjalankan program XYZ dan program ABC menginstal versi perpustakaan bersama yang benar, itu mungkin (atau mungkin tidak) bekerja untuk Anda. Anda dapat mencobanya dan mencoba.

Kedua, jika Anda mencoba menjalankan program yang terlalu lama atau terlalu baru, mungkin diperlukan versi library yang tidak tersedia untuk distribusi Linux Anda.

Yang mungkin Anda lakukan adalah memeriksa apakah Anda dapat menggunakan versi lain dari program tersebut. Misalnya, menggunakan Eclipse versi 3 alih-alih versi 4. Ini dapat membantu kasus Anda.

Cara lain adalah dengan memeriksa situs web atau forum pengembang dan melihat apakah Anda dapat menginstal versi perpustakaan yang benar secara manual dari kode sumbernya. Itu membutuhkan banyak usaha (pada tahun 2020) tetapi Anda tidak memiliki banyak pilihan.

Apakah itu berhasil untuk Anda?

Saya harap saya telah membuat hal-hal sedikit lebih jelas untuk Anda. Apakah Anda berhasil memperbaiki masalah pustaka bersama di sistem Anda? Jika Anda memiliki pertanyaan, saran, jangan ragu untuk memberikan komentar. Ciao :)



Ubuntu
  1. Ubuntu – Bagaimana Cara Membuka File .bak Di Linux?

  2. Rpm:Kesalahan Saat Memuat Pustaka Bersama:Libz.so.1:Tidak Dapat Membuka File Objek Bersama:Tidak Ada File Tersebut

  3. "kesalahan saat memuat perpustakaan bersama:libjli.so:tidak dapat membuka file objek bersama:Tidak ada file atau direktori seperti itu" kesalahan 'java -version' pada Startup

  1. libaio.so.1:tidak dapat membuka file objek bersama

  2. libpulse.so.0:tidak dapat membuka file objek bersama:Tidak ada file atau direktori tersebut

  3. ImportError:libtk8.6.so:tidak dapat membuka file objek bersama:Tidak ada file atau direktori tersebut

  1. Cara Mengatasi Kesalahan "tidak dapat membuka file objek bersama" di Distribusi Linux berbasis Ubuntu

  2. Cara mengonfigurasi pesan kesalahan xdebug untuk membuka file di editor Kate di Ubuntu

  3. Kesalahan Linux saat memuat pustaka bersama:tidak dapat membuka file objek bersama:Tidak ada file atau direktori tersebut