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