在Mac OS X 10.8(Mountain Lion)上构建graphviz时未找到Xlib.h



当使用自制软件安装graphviz时,脚本到达"在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。

干杯。

安装XQuartz后,只需输入即可将符号链接添加到X11安装文件夹

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

在终端中。这也将在不更改任何ruby脚本的情况下解决问题。

您需要告诉tkstubs构建(可能还有包中的其他位)在/opt/X11/include中查找标头;这不在标准include路径上。

通常这是通过传递-I/opt/X11/include作为一个额外的编译器标志来实现的,但是这样做的方法取决于构建系统。

对于相当现代的configure脚本,最好的方法是在环境变量CPPFLAGS中传递它;如果包使用了另一个生成系统,或者由于其他原因而不起作用,那么您需要查看生成目录中的Makefile

您可以在编译/链接(或brew)命令之前在shell中输入:

export CPPFLAGS=-I/opt/X11/include

导出行将告诉编译/链接器在/opt/X11/include中查找X11-include文件

遇到同样的问题,在终端上运行此命令

xcode-select --install 

对我有效。安装xQuartz后运行此命令。

如果您需要在CMake构建中使用此功能:

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

这对我来说效果很好。

我通过将x11头文件目录复制到/opt/local/include目录来安装它。也许这不是解决问题的最佳方法,但既快捷又简单。

我在OS X上尝试从源代码编译ffmpeg时发现了这个线程。我需要--enable-x11grab,而自制版本不支持这个选项。

我已经安装了XQuartz,但我不断收到来自./configure:ERROR: Xlib not found的错误。我以为这里的答案能解决我的问题,但事实并非如此!

所以,如果有人在同一条船上,我的解决方案是:

我打开生成的config.log,发现了很多引用各种include和头文件的错误,包括X11/Xlib.h——这是误导。在日志文件的最底部是密钥,pkg-config抱怨找xbc.pc,并要求将其放在路径上。但是,终端上显示的错误消息没有说明pkg-configxbc

解决方案是将添加到PKG_CONFIG_PATH环境变量中。我的不存在,所以我只做了export PKG_CONFIG_PATH=/opt/X11/lib/pkgconfig/(我找到xbc.pc的文件夹)。

我重新穿上了configure,一切都很有魅力!

TL;DR:检查config.log-不要相信终端输出

由于make文件正在查找X11/xlib.h,即在当前目录中查找X11文件夹,因此解决此问题的一种方法是简单地将/opt/X11/include/X11目录复制到包含make文件的目录中。

最新更新