Saya memohon perintah seperti:
g++ ... -o"myapp" -lX11 ...
Dan mendapatkan
/usr/bin/ld: cannot find -lX11
Saya telah menginstal paket-paket berikut untuk mendukung multiarch:
ia32-libs, libc6-dev-i386 and g++-multilib
Tetapi tidak berhasil. Tampaknya tidak ada X11.so di / usr / lib32, sebenarnya hanya ada 52 perpustakaan di direktori itu. Saya mendapat kesan Anda harus menginstal perpustakaan secara manual, tetapi saya bingung apa yang harus saya periksa selanjutnya.
Setiap bantuan dihargai.
ldconfig -p | grep libX11\\.
?Jawaban:
Anda memerlukan file header, yang disediakan oleh
-dev
paket, dan bukan di paket perpustakaan itu sendiri. Jadi, coba installibx11-dev
. Itu harus memperbaiki kesalahan build khusus ini, meskipun Anda mungkin mendapatkan kesalahan serupa tentang perpustakaan lain (dan kemudian Anda dapat menginstal-dev
paket mereka .)Meskipun paket-paket ini menyediakan file header daripada binari, dan secara umum file header berisi akun untuk semua arsitektur yang didukung melalui penggunaan preprocessor macro,
-dev
paket-paket di Ubuntu cenderung khusus untuk arsitektur, dan ini adalah kasus untuklibx11-dev
(seperti yang dapat dilihat) di sini dengan memperluas rilis dan menemukan.deb
paket yang tercantumlibx11-dev
dalam rilis itu). Karena sistem Ubuntu Anda 64-bit dan Anda sedang menyusun program 32-bit yang harus terhubung dengan versi perpustakaan 32-bit, Anda mungkin perlu menginstal versi 32-bitlibx11-dev
. Jika Anda menginstal denganapt-get
atauaptitude
, Anda dapat menentukannya dengan menunjukkanlibx11-dev:i386
sebagai paket yang akan diinstal (sejak multarch didukung dan digunakan).http://packages.ubuntu.com/ adalah sumber yang bagus untuk menemukan nama
-dev
paket yang sesuai dengan paket perpustakaan. Tidak selalu nama paket perpustakaan segera diikuti oleh-dev
; kadang-kadang nomor versi hadir dalam nama paket perpustakaan, terutama setelah a-
, tidak ada dalam nama-dev
paket yang sesuai .sumber