web-dev-qa-db-fra.com

Compiler une application 32 bits sur 64 bits, impossible de trouver -lX11

J'appelle une commande comme:

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

Et obtenir

/usr/bin/ld: cannot find -lX11

J'ai installé les paquets suivants pour supporter le multiarch:

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

Mais en vain. Il ne semble pas y avoir de fichier X11.so dans/usr/lib32, il n’ya en réalité que 52 bibliothèques dans ce répertoire. J'ai l'impression que vous devriez installer manuellement des bibliothèques, mais je ne sais pas ce que je devrais vérifier par la suite.

Toute aide appréciée.

9
Frank

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

Même si ces packages fournissent des fichiers d’en-tête plutôt que des fichiers binaires, et qu’en général, ils contiennent toutes les architectures prises en charge via l’utilisation de macros de préprocesseur, les packages -dev dans Ubuntu ont tendance à être spécifiques à l’architecture. libx11-dev (comme on peut le voir ici en développant une version et en recherchant les packages .deb énumérés pour libx11-dev dans cette version). Étant donné que votre système Ubuntu est 64 bits et que vous compilez un programme 32 bits devant ê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-get ou aptitude, vous pouvez le spécifier en indiquant libx11-dev:i386 comme package à installer (car multarch est pris en charge et utilisé) .

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

5
Eliah Kagan