web-dev-qa-db-fra.com

Xlib.h introuvable lors de la création de graphviz sur Mac OS X 10.8 (Mountain Lion)

Lorsque vous utilisez homebrew pour installer graphviz, le script arrive au point de "Faire l'installation dans tkstubs", puis génère l'erreur fatale suivante:

In file included from tkStubLib.c:15:
/usr/include/tk.h:78:11: fatal error: 'X11/Xlib.h' file not found
#include <X11/Xlib.h>

J'ai installé XQuartz car X11 a été supprimé dans Mountain Lion, mais je ne sais pas s'il est installé correctement. L'emplacement de Xlib.h est:

/opt/X11/include/X11/Xlib.h

Il existe également deux liens symboliques vers/opt/X11, ce sont:

/usr/X11
/usr/X11R6

Est-ce que cela ressemble à la configuration correcte pour vous? Je n'ai jamais eu affaire à X11 ou XQuartz avant hier.

À votre santé.

39
AntBrown

Vous devez indiquer à la génération tkstubs (et éventuellement à d'autres bits du package) de rechercher des en-têtes dans /opt/X11/include; ce n'est pas sur le chemin d'inclusion standard.

Habituellement, ceci est réalisé en passant -I/opt/X11/include comme indicateur de compilation supplémentaire, la méthode pour le faire dépend cependant du système de construction.

Pour les scripts configure raisonnablement modernes, la meilleure approche consiste à le passer dans la variable d'environnement CPPFLAGS; si le package utilise un autre système de construction ou que cela ne fonctionne pas pour une autre raison, vous devez regarder le Makefile dans le répertoire de construction.

28
Simon Richter

Après avoir installé XQuartz, vous pouvez ajouter un lien symbolique vers votre dossier d'installation X11 en entrant simplement

ln -s /opt/X11/include/X11 /usr/local/include/X11

dans le terminal. Cela résoudra également le problème sans modifier aucun script Ruby.

109
Daniel Münter

Vous pouvez entrer dans votre Shell avant la commande de compilation/lien (ou infusion):

export CPPFLAGS=-I/opt/X11/include

La ligne d'exportation indiquera au compilateur/éditeur de liens de rechercher dans/opt/X11/include pour les fichiers d'inclusion X11

26
Robert J Berger

Eu le même problème et exécuter cette commande sur le terminal

xcode-select --install 

travaillé pour moi. Exécutez cette commande après avoir installé xQuartz .

5
Abdul Jamil

Si vous en avez besoin pour travailler dans vos builds CMake:

if(Apple)
   include_directories(AFTER "/opt/X11/include")
endif()

Cela a bien fonctionné pour moi.

3
Robert Massaioli

Je l'ai fait installer en copiant le répertoire du fichier d'en-tête x11 dans le répertoire/opt/local/include. Probablement pas la meilleure façon de contourner ce problème, mais rapide et facile.

2
denson

Étant donné que le fichier make recherche X11/xlib.h, c'est-à-dire qu'il recherche le dossier X11 dans le répertoire en cours, une façon de résoudre ce problème consiste à copier simplement le répertoire/opt/X11/include/X11 dans le répertoire qui contient faire un fichier.

1
Data Scientist

J'ai trouvé ce fil en essayant de compiler ffmpeg depuis la source sous OS X. J'avais besoin de --enable-x11grab Et la version homebrew ne prend pas en charge cette option.

J'avais déjà installé XQuartz mais je continuais à recevoir des erreurs de ./configure: ERROR: Xlib not found. Je pensais que les réponses ici résoudraient mon problème, mais ce n'est pas le cas!

Donc, si quelqu'un est jamais dans le même bateau, ma solution était la suivante:

J'ai ouvert le config.log Généré et j'ai trouvé beaucoup d'erreurs faisant référence à divers fichiers d'en-tête et d'inclusion, y compris X11/Xlib.h - cela est trompeur. Tout en bas du fichier journal se trouvait la clé, pkg-config Se plaignait de rechercher xbc.pc, Et a demandé qu'il soit placé sur le chemin. Cependant, le message d'erreur qui s'affiche sur le terminal ne dit rien sur pkg-config Ou xbc!

La solution consiste à ajouter à votre variable d'environnement PKG_CONFIG_PATH. Le mien était inexistant, donc je viens de faire export PKG_CONFIG_PATH=/opt/X11/lib/pkgconfig/ (Le dossier où j'ai trouvé xbc.pc).

J'ai réanimé configure et tout a fonctionné comme un charme!

TL; DR: vérifiez config.log - ne faites pas confiance à la sortie du terminal!

1
Monkpit