2012-07-28 66 views
6

因此,我们都知道Mountain Lion不再支持X11,需要X11的用户需要下载Xquartz。 Xquartz安装到/opt,但它也符号链接X11X11R6/usr。但是当构建需要链接到X11的软件包含文件时,我发现我必须通过一个环境变量,将/usr/X11/include(或/opt/X11/include)添加到库搜索路径中,以获得./configure来查找X11库。我的问题是为什么?为什么OS X 10.8 Mountain Lion在构建软件时找不到X11库?

我已经做了谷歌的一些研究(许多成果指向回到堆栈溢出),我读过Apple的文档,并且这些来源都表明,在OS X不等同于发现/etc/ld.so.conf文件许多(如果不是全部的话)Linux发行版。 Apple甚至说默认DYLD_LIBRARY_PATH为空。但是,在Lion下(安装Apple的最后一个'官方'X11),同样的./configure脚本会在没有向库搜索路径添加任何内容的情况下找到X11库。

那么,为什么不能./configure脚本在没有明确修改库搜索路径的情况下在Mountain Lion中找到X11库?

+0

你想要配置的X11应用程序的例子和配置的输出是什么?例如,如果我下载[xpdf](http://www.foolabs.com/xpdf/),它会在Mountain Lion上找到我的X库,并且我认为我没有做任何特别的事情(除了安装XQuartz )。 – Stennie 2012-07-30 01:28:46

+0

具体来说,Ruby 1.8.7。你可以在这里看到问题和解决方案:http:// stackoverflow。com/questions/11664835/mountain-lion-rvm-install-1-8-7-x11-error 正如我在原始问题中所说的那样,我已经“修复”了这个问题。我只是想知道,如果有人知道为什么这种行为在Xquartz的Mountain Lion中与Lion X11中的Lion不同。 – 2012-07-30 04:32:09

回答

1

问比一年前更多...但我来到这里有一个类似的问题...

注意的是,在提到红宝石问题,没有库搜索路径被修改。 该解决方案只是设置了一个环境变量,它被许多Makefiles选为C++编译器的标志。该示例定义了构建时间-I ncludepath,即,哪里搜索.h 读取器 - 而不是(这可能是您的编译器/链接器的-L选项)。两者本来都是建造时间选项。 LD_LIBRARY_PATH或DYLD_LIBRARY_PATH - 两者都是动态链接器在运行时考虑的环境变量。 (更多信息,请参见http://en.wikipedia.org/wiki/Dynamic_linker

我手边没有10.8之前的机器,但猜测可能有符号链接 /usr/include/X11 - >/opt/X11/include/X11 - 否则我不知道如何ATM它 可能已经工作过,假设同样的消息来源......

这是此类问题的另一个可能的解决方案(只是固定我的RealVNC版本):

$ autoconf 
$ ./configure 

所以你的问题“为什么?”可能最终回答如下:因为您的源代码包含一个基于旧版自动工具的“预构建”配置脚本,该脚本不包含 /opt/X11/include作为搜索X11的潜在位置包含或者根本没有获取上面提到的编译时间标志正好在你当前的系统上。 我通过自制软件安装了autoconf - 啊,好东西,欢呼声。

相关问题