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 до вчерашнего дня.
Приветствия.
Ответы
Ответ 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 - не доверяйте вывода терминала!