45

使用 homebrew 安装 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。

干杯。

4

8 回答 8

120

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

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

在终端。这也将解决问题,而无需更改任何 ruby​​ 脚本。

于 2012-08-23T09:50:04.990 回答
31

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

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

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

于 2012-07-13T06:35:50.860 回答
27

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

export CPPFLAGS=-I/opt/X11/include

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

于 2012-11-27T01:46:38.583 回答
7

有同样的问题并在终端上运行此命令

xcode-select --install 

为我工作。安装xQuartz后运行此命令。

于 2017-05-01T08:05:25.873 回答
4

如果您需要它在您的 CMake 构建中工作:

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

这对我来说效果很好。

于 2015-03-25T22:00:02.713 回答
2

我通过将 x11 头文件目录复制到 /opt/local/include 目录来安装它。可能不是解决它的最佳方法,但快速简便。

于 2012-11-15T22:00:21.870 回答
2

我在尝试从 OS X 上的源代码编译 ffmpeg 时发现了这个线程。我需要--enable-x11grab并且自制程序构建不支持此选项。

我已经安装了 XQuartz,但我不断收到来自./configure:的错误ERROR: Xlib not found。我认为这里的答案可以解决我的问题,但他们没有!

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

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

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

我重新跑configure了,一切都像魅力一样!

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

于 2016-04-29T18:38:13.433 回答
1

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

于 2014-08-22T21:05:11.950 回答