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.
ldconfig -p | grep libX11\\.
?Réponses:
Vous avez besoin des fichiers d'en-tête, qui sont fournis par les
-dev
packages, et non dans les packages de bibliothèque eux-mêmes. Alors, essayez d'installerlibx11-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-dev
packages.)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
-dev
packages dans Ubuntu ont tendance à être spécifiques à l'architecture, et c'est le cas pourlibx11-dev
(comme on peut le voir ici en développant une version et en trouvant les.deb
packages répertoriéslibx11-dev
dans 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 delibx11-dev
. Si vous installez avecapt-get
ouaptitude
, vous pouvez le spécifier en indiquantlibx11-dev:i386
comme package à installer (depuis multarch est pris en charge et utilisé).http://packages.ubuntu.com/ est une bonne ressource pour trouver le nom du
-dev
package 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-dev
package correspondant .la source