6

因此,我们都知道 Mountain Lion 不再附带 X11,需要 X11 的用户被引导下载 Xquartz。Xquartz 安装到/opt,但它也符号链接X11X11R6/usr。但是在构建需要链接到 X11 包含文件的软件时,我发现我必须将环境变量添加/usr/X11/include(或/opt/X11/include)传递到库搜索路径才能./configure找到 X11 库。我的问题是为什么?

我对 Google 做了一些研究(许多结果都指向 Stack Overflow),并且我已经阅读了 Apple 的文档,这些资料都表明 OS X 中没有与/etc/ld.so.conf许多(如果不是全部)中找到的文件等效的文件Linux 发行版。苹果甚至声明DYLD_LIBRARY_PATH默认情况下它是空的。但是,在 Lion 下(安装了 Apple 的最后一个“官方”X11),相同的./configure脚本将找到 X11 库,而无需向库搜索路径添加任何内容。

那么,为什么./configure不显式修改库搜索路径,脚本就无法在 Mountain Lion 中找到 X11 库呢?

4

1 回答 1

1

一年多前问过......但是当我来到这里时遇到类似的问题......

请注意,在提到的 ruby​​ 问题中,没有修改库搜索路径。该解决方案只是设置一个环境变量,许多 Makefile 将其作为 C++ 编译器的标志。该示例定义了构建时间 -I ncludepath,即在哪里搜索.headers - 而不是(这将是编译器/链接器的 -L 选项)。两者都是构建时间选项。无论是 LD_LIBRARY_PATH 还是 DYLD_LIBRARY_PATH - 两者都是动态链接器在运行时考虑的环境变量。(有关更多信息,请参阅http://en.wikipedia.org/wiki/Dynamic_linker

我手头没有 10.8 之前的机器,但猜测可能有一个符号链接 /usr/include/X11 -> /opt/X11/include/X11 - 否则我不知道它以前是如何工作的,假设相同的来源...

这是此类问题的另一个潜在解决方案(刚刚修复了我的 realvnc 构建):

$ autoconf
$ ./configure

所以你的问题是“为什么?” 最终可以回答:因为您的源包含一个“预建”配置脚本,该脚本基于旧自动工具,不包括 /opt/X11/include 作为搜索 X11 包括的潜在位置或根本没有得到一些上面提到的编译时间标志就在您当前的系统上。我通过自制软件安装了 autoconf——啊,好东西,干杯。

于 2013-10-18T22:48:33.080 回答