Компілюючи 32-розрядну програму на 64-бітній, не вдалося знайти -lX11


9

Я викликаю команду типу:

g++ ... -o"myapp" -lX11 ...

І отримувати

/usr/bin/ld: cannot find -lX11

Я встановив такі пакети для підтримки мультиарха:

ia32-libs, libc6-dev-i386 and g++-multilib

Але безрезультатно. Здається, що в / usr / lib32 не існує X11.so, насправді у цьому каталозі лише 52 бібліотеки. Я маю враження, що вам слід вручну встановити бібліотеки, але я в занепокоєнні щодо того, що мені слід перевірити далі.

Будь-яка допомога вдячна.


1
Чи можете ви показати результат команди ldconfig -p | grep libX11\\.?
Мартін Діріхс

Відповіді:


5

Вам потрібні файли заголовків, які надаються -devпакетами, а не в самих пакунках бібліотеки. Отже, спробуйте встановити libx11-dev. Це повинно виправити цю конкретну помилку збірки, хоча ви можете отримати подібні помилки щодо інших бібліотек (і тоді ви можете встановити їх -devпакети.)

Незважаючи на те, що ці пакети надають файли заголовків, а не двійкові файли, і загалом у файлах заголовків припадає на всі підтримувані архітектури за допомогою використання макросів препроцесора, тим не менш, -devпакети в Ubuntu мають тенденцію до архітектури, і це так libx11-dev(як видно тут , розгорнувши реліз та знайдіть .debпакети, перелічені libx11-devу цьому випуску). Оскільки ваша система Ubuntu 64-розрядна, і ви компілюєте 32-бітну програму, яка повинна пов'язувати 32-бітну версію бібліотеки, можливо, вам доведеться встановити 32-бітну версію libx11-dev. Якщо ви встановлюєте за допомогою apt-getабо aptitude, ви можете вказати це, вказавши libx11-dev:i386як пакет для встановлення (оскільки multarch підтримується та використовується).

http://packages.ubuntu.com/ - це хороший ресурс для пошуку імені -devпакета, що відповідає бібліотечному пакету. Не завжди ім'я бібліотечного пакета одразу після цього -dev; іноді номери версій, присутні в назві пакету бібліотеки, особливо після a -, відсутні у назві відповідного -devпакета.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.