Я вызываю команду как:
g++ ... -o"myapp" -lX11 ...
И получать
/usr/bin/ld: cannot find -lX11
Я установил следующие пакеты для поддержки multiarch:
ia32-libs, libc6-dev-i386 and g++-multilib
Но безрезультатно. В каталоге / usr / lib32, похоже, нет никакого X11.so, на самом деле в этом каталоге всего 52 библиотеки. У меня такое впечатление, что вы должны вручную устанавливать библиотеки, но я не знаю, что мне делать дальше.
Любая помощь приветствуется.
ldconfig -p | grep libX11\\.
?Ответы:
Вам нужны заголовочные файлы, которые предоставляются
-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
пакета.источник