GNU/Linux >> Belajar Linux >  >> Linux

ld tidak dapat menemukan perpustakaan yang ada

Di Ubuntu, Anda dapat menginstal libtool yang menyelesaikan pustaka secara otomatis.

$ sudo apt-get install libtool

Ini menyelesaikan masalah dengan ltdl bagi saya, yang telah diinstal sebagai libltdl.so.7 dan tidak ditemukan hanya sebagai -lltdl dalam pembuatan.


Masalahnya adalah linker sedang mencari libmagic.so tetapi Anda hanya memiliki libmagic.so.1

Peretasan cepat adalah dengan menghubungkan libmagic.so.1 ke libmagic.so


Merupakan konvensi Debian untuk memisahkan pustaka bersama ke dalam komponen waktu prosesnya (libmagic1: /usr/lib/libmagic.so.1 → libmagic.so.1.0.0 ) dan komponen pengembangannya (libmagic-dev: /usr/lib/libmagic.so → … ).

Karena nama perpustakaan adalah libmagic.so.1 , itu adalah string yang disematkan ke dalam file yang dapat dieksekusi sehingga file tersebut dimuat saat file yang dapat dieksekusi dijalankan.

Namun, karena pustaka ditetapkan sebagai -lmagic ke penaut, ia mencari libmagic.so , oleh karena itu diperlukan untuk pengembangan.

Lihat Diego E. Pettenò:Tautan dan nama untuk detail tentang cara kerja semua ini di Linux.

Singkatnya, Anda harus apt-get install libmagic-dev . Ini tidak hanya memberi Anda libmagic.so tetapi juga file lain yang diperlukan untuk kompilasi seperti /usr/include/magic.h .


Seperti yang baru saja dirumuskan oleh grepsedawk, jawabannya terletak pada -l opsi g++ , memanggil ld . Jika Anda melihat halaman manual dari perintah ini, Anda dapat melakukan:

  • g++ -l:libmagic.so.1 [...]
  • atau:g++ -lmagic [...] , jika Anda memiliki symlink bernama libmagic.so di jalur lib Anda

Linux
  1. Cara Memperbaiki kesalahan Konfigurasi:tidak dapat menemukan direktori makro 'm4' [Terpecahkan]

  2. Tidak dapat menemukan baseurl yang valid:Kesalahan YumRepo [Terpecahkan]

  3. kesalahan konfigurasi phpize:tidak dapat menemukan sumber (config.m4)

  1. Kesalahan Tidak dapat menemukan [Ekstensi PHP mysqlnd] OpenSSL

  2. Tidak dapat menemukan pspell – Perbaiki Kesalahan Konfigurasi PHP

  3. Tidak Dapat Menginstal 32 Bit Gstreamer-ffmpeg Biasanya, Perpustakaan Tidak Dapat Menemukan Libs 32 Bit Lainnya?

  1. Tidak Dapat Menemukan -lm?

  2. /usr/bin/ld:tidak dapat menemukan -lpython2.7

  3. Tidak dapat menemukan kesalahan perpustakaan libcrypto