为什么OS X 10.8 Mountain Lion在构建软件时没有找到X11库?

Chi*_*den 6 x11 dyld osx-mountain-lion

因此,我们都知道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发行版.Apple甚至声称DYLD_LIBRARY_PATH默认为空.但是,在Lion下(安装了Apple的最后一个'官方'X11),相同的./configure脚本会找到X11库而不向库搜索路径添加任何内容.

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

小智 1

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

请注意,在提到的 ruby​​ 问题中,没有修改库搜索路径。该解决方案只是设置一个环境变量,许多 Makefile 都会将其作为 C++ 编译器的标志。该示例定义了构建时间 -I nincludepath,即在哪里搜索 .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
Run Code Online (Sandbox Code Playgroud)

所以你的问题是“为什么?” 最终可能会得到这样的答复:因为您的源代码包含一个“预构建”的配置脚本,该脚本基于较旧的自动工具,该自动工具不包括 /opt/X11/include 作为搜索 X11 包含的潜在位置,或者根本没有获得某些内容上面提到的编译时标志就在您当前的系统上。我通过自制程序安装了 autoconf —— 啊,很棒的东西,干杯。