Compilation d'une application 32 bits sur 64 bits, impossible de trouver -lX11


9

J'invoque une commande comme:

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

Et obtenir

/usr/bin/ld: cannot find -lX11

J'ai installé les packages suivants pour prendre en charge multiarch:

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

Mais en vain. Il ne semble pas y avoir de X11.so dans / usr / lib32, en fait il n'y a que 52 bibliothèques dans ce répertoire. J'ai l'impression que vous devriez installer manuellement les bibliothèques, mais je ne sais pas ce que je devrais vérifier ensuite.

Toute aide appréciée.


1
Pouvez-vous afficher la sortie de la commande ldconfig -p | grep libX11\\.?
Martin Dirichs

Réponses:


5

Vous avez besoin des fichiers d'en-tête, qui sont fournis par les -devpackages, et non dans les packages de bibliothèque eux-mêmes. Alors, essayez d'installer libx11-dev. Cela devrait corriger cette erreur de construction particulière, bien que vous puissiez obtenir des erreurs similaires sur d'autres bibliothèques (et ensuite vous pouvez installer leurs -devpackages.)

Même si ces packages fournissent des fichiers d'en-tête plutôt que des fichiers binaires, et en général, les fichiers d'en-tête représentent toutes les architectures prises en charge via l'utilisation de macros de préprocesseur, néanmoins les -devpackages dans Ubuntu ont tendance à être spécifiques à l'architecture, et c'est le cas pour libx11-dev(comme on peut le voir ici en développant une version et en trouvant les .debpackages répertoriés libx11-devdans cette version). Étant donné que votre système Ubuntu est en 64 bits et que vous compilez un programme 32 bits qui doit être lié à la version 32 bits de la bibliothèque, vous devrez probablement installer la version 32 bits de libx11-dev. Si vous installez avec apt-getou aptitude, vous pouvez le spécifier en indiquant libx11-dev:i386comme package à installer (depuis multarch est pris en charge et utilisé).

http://packages.ubuntu.com/ est une bonne ressource pour trouver le nom du -devpackage correspondant à un package de bibliothèque. Ce n'est pas toujours le nom du package de bibliothèque immédiatement suivi de -dev; parfois, les numéros de version présents dans le nom du package de bibliothèque, en particulier après a -, sont absents dans le nom du -devpackage correspondant .

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.