Kompilasi aplikasi 32-bit pada 64-bit, tidak dapat menemukan -lX11

9

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.

jujur
sumber
1
Bisakah Anda menunjukkan output dari perintah ldconfig -p | grep libX11\\.?
Martin Dirichs

Jawaban:

5

Anda memerlukan file header, yang disediakan oleh -devpaket, dan bukan di paket perpustakaan itu sendiri. Jadi, coba instal libx11-dev. Itu harus memperbaiki kesalahan build khusus ini, meskipun Anda mungkin mendapatkan kesalahan serupa tentang perpustakaan lain (dan kemudian Anda dapat menginstal -devpaket 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, -devpaket-paket di Ubuntu cenderung khusus untuk arsitektur, dan ini adalah kasus untuk libx11-dev(seperti yang dapat dilihat) di sini dengan memperluas rilis dan menemukan .debpaket yang tercantum libx11-devdalam 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-bit libx11-dev. Jika Anda menginstal dengan apt-getatau aptitude, Anda dapat menentukannya dengan menunjukkan libx11-dev:i386sebagai paket yang akan diinstal (sejak multarch didukung dan digunakan).

http://packages.ubuntu.com/ adalah sumber yang bagus untuk menemukan nama -devpaket 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 -devpaket yang sesuai .

Eliah Kagan
sumber