Подтвердить что ты не робот

Xlib.h не найден при построении графика на Mac OS X 10.8 (Mountain Lion)

При использовании homebrew для установки graphviz, script получает значение "Сделать установку в tkstubs", а затем генерирует следующую фатальную ошибку:

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>

Я установил XQuartz, поскольку X11 был сброшен в Mountain Lion, но я не уверен, что он установлен правильно. Расположение Xlib.h:

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

В/opt/X11 имеются две символические ссылки:

/usr/X11
/usr/X11R6

Это похоже на правильную настройку для вас? Я никогда не занимался X11 или XQuartz до вчерашнего дня.

Приветствия.

4b9b3361

Ответ 1

Вам нужно указать tkstubs build (и, возможно, другие биты в пакете), чтобы искать заголовки в /opt/X11/include; это не входит в стандартный путь include.

Обычно это достигается путем передачи -I/opt/X11/include в качестве дополнительного флага компилятора, однако способ, который он выполняет, зависит от системы сборки.

Для разумно современных сценариев configure наилучший подход - передать его в переменную окружения CPPFLAGS; если пакет использует другую систему сборки или это не работает по другой причине, вам нужно посмотреть Makefile в каталоге сборки.

Ответ 2

После установки XQuartz вы можете добавить символическую ссылку в свою установочную папку X11, просто введя

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

в терминале. Это также устранит проблему, не изменив ни одного ruby ​​ script.

Ответ 3

Вы можете войти в свою оболочку перед командой compile/link (или brew):

export CPPFLAGS=-I/opt/X11/include

Строка экспорта скажет компилятору/компоновщику искать в /opt/X11/include для включаемых файлов X11

Ответ 4

Имел ту же проблему и выполнял эту команду на терминале

xcode-select --install 

работал у меня. Запустите эту команду после установки xQuartz.

Ответ 5

Если вам нужно это для работы в ваших сборках CMake:

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

Это сработало для меня.

Ответ 6

Я получил его для установки, скопировав каталог файлов заголовков x11 в каталог /opt/local/include. Вероятно, это не лучший способ обойти это, но быстро и легко.

Ответ 7

Поскольку файл make ищет X11/xlib.h, то есть ищет папку X11 в текущем каталоге, один из способов решить эту проблему - просто скопировать каталог /opt/X 11/include/X11 в каталог, содержащий файл make.

Ответ 8

Я нашел эту ветку, пытаясь скомпилировать ffmpeg из источника в OS X. Мне нужно --enable-x11grab, а сборка homebrew не поддерживает эту опцию.

У меня уже установлен XQuartz, но я продолжал получать ошибки от ./configure: ERROR: Xlib not found. Я думал, что ответы здесь помогут решить мою проблему, но они этого не сделали.

Итак, если кто-нибудь в одной лодке, мое решение было следующим:

Я открыл сгенерированный config.log и обнаружил множество ошибок, относящихся к различным файлам include и header, включая X11/Xlib.h - это вводит в заблуждение. В самом низу файла журнала был ключ, pkg-config жаловался на поиск xbc.pc и попросил его поместить на путь. Однако сообщение об ошибке, которое отображается на терминале, ничего не говорит о pkg-config или xbc!

Решение заключается в добавлении в переменную среды PKG_CONFIG_PATH. Mine не существовало, поэтому я просто сделал export PKG_CONFIG_PATH=/opt/X11/lib/pkgconfig/ (папку, где я нашел xbc.pc).

Я повторил configure, и все работало как шарм!

TL; DR: проверить config.log - не доверяйте вывода терминала!