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

Ant*_*own 40 x11 homebrew graphviz osx-mountain-lion

使用自制软件安装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>
Run Code Online (Sandbox Code Playgroud)

我已安装XQuartz,因为X11已经被Mountain Lion删除,但我不确定它是否安装正确.Xlib.h的位置是:

/opt/X11/include/X11/Xlib.h
Run Code Online (Sandbox Code Playgroud)

/ opt/X11还有两个符号链接,它们是:

/usr/X11
/usr/X11R6
Run Code Online (Sandbox Code Playgroud)

这看起来像你正确的设置吗?直到昨天我才从未处理过X11或XQuartz.

干杯.

Dan*_*ter 114

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

ln -s /opt/X11/include/X11 /usr/local/include/X11
Run Code Online (Sandbox Code Playgroud)

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

  • 然后显示“ld:找不到-lX11库”,如何修复? (2认同)

Sim*_*ter 29

您需要告诉tkstubs构建(以及可能包中的其他位)以查找标头/opt/X11/include; 这不是标准的包含路径.

通常这是通过传递-I/opt/X11/include另外的编译器标志来实现的,但是这样做的方法依赖于构建系统.

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

  • `CPPFLAGS`用于预处理程序标志 - C++编译器调用应该遵循这些标准.C只有标志进入`CFLAGS`,C++只有'CXXFLAGS`标志. (4认同)

Rob*_*ger 27

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

export CPPFLAGS=-I/opt/X11/include
Run Code Online (Sandbox Code Playgroud)

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

  • 同样在这里.曾在小牛队工作过.在我的情况下路径是这样的:`export CPPFLAGS = -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/Tk.framework /Versions/8.5/Headers;` (2认同)

Rob*_*oli 6

如果您需要在 CMake 构建中使用它:

if(APPLE)
   include_directories(AFTER "/opt/X11/include")
endif()
Run Code Online (Sandbox Code Playgroud)

这对我来说效果很好。


Abd*_*mil 5

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

xcode-select --install 
Run Code Online (Sandbox Code Playgroud)

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