为啥即使在搜索路径中列出了 GLEW 动态库,Xcode 也无法找到它?
Posted
技术标签:
【中文标题】为啥即使在搜索路径中列出了 GLEW 动态库,Xcode 也无法找到它?【英文标题】:Why is Xcode unable to find a GLEW dynamic library even when it is listed in the search path?为什么即使在搜索路径中列出了 GLEW 动态库,Xcode 也无法找到它? 【发布时间】:2015-09-20 20:03:27 【问题描述】:OS X 优胜美地 10.10.5 Xcode 6.4
背景:我需要使用 OpenGL 加载库,例如 GLEW,因为我的电脑不支持我的 OpenGl 版本学习。因此,我下载了 GLEW-zip 文件并使用 make 来安装动态库。
现在:我正在尝试在 Xcode 中使用此动态链接库 (libGLEW.1.13.0.dylib),但出现以下错误“ld: library not found for -lGLEW”。但是,我已经告诉 Xcode 在哪里可以找到它:
-
首先,将 /usr/lib/libGLEW.1.13.0.dylib 添加到项目的构建 Phases -> Link With Binary Libraries
然后,将 /usr/lib 添加到项目的 Build Settings -> Library Search
路径。
最后,将包含文件:/usr/include添加到项目的Build Settings -> Header Search
路径
什么是或可能导致此问题?
已解决:
问题:动态库安装在错误的目录/usr/lib
。它应该在/usr/local/lib
。 @Ken Thomases 的完整解释如下。
解决方案:将 Makefile 的 GLEW_DEST ?= /usr
更改为 GLEW_DEST ?= /usr/local
。这里简单提一下http://glew.sourceforge.net/install.html
【问题讨论】:
这是适用于 ios 还是 MacOS? 您不需要添加/usr/lib
或/usr/include
,因为它们是标准路径。你能发布ls -l /usr/lib/libGLEW*
的输出吗?
@***foe 我需要使用 /usr/include 因为这是库的头文件所在的位置,否则我需要直接添加到我的项目目录中。上面发布的ls -l /usr/lib/libGLEW*
的输出。
显示产生错误(包括错误)的步骤的构建脚本。
i.imgur.com/YlVGMIY.png
【参考方案1】:
我相信问题的根源在于您将 GLEW 安装到 /usr/lib 中。通常,/usr/lib 应该为系统库保留。第三方库应该放在其他地方,例如 /usr/local/lib。 GLEW 构建系统可能允许您在配置或“make install”期间指定 /usr/local 的“前缀”。您必须查阅其文档。
/usr/lib 不好的一个原因是使用 Xcode 的典型构建使用链接命令的-isysroot
选项。这会将基于标准系统目录的路径重定向到 SDK 目录。因此,对 /usr/lib 的引用被解释为对 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/lib 的引用。这就是基于 SDK 的开发的完成方式。
显然,/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/lib 不包括您的 libGLEW.1.13.0.dylib重新尝试链接到。因此链接错误。
因此,您可以将 GLEW 安装到 /usr/local 并获取链接。但是,您必须了解,这不会导致您可以将可执行文件分发到其他系统。那些其他系统将没有 GLEW,因此您的程序将无法加载。您真正需要做的是将 GLEW 构建为一个框架,并链接到该框架并将其作为您的应用程序包的一部分发布。或者,如果 GLEW 无法构建为框架,您需要构建它并将其“安装”到系统中而不是私有构建目录中,然后将该构建目录复制到您的应用程序包中。您还需要确保对 GLEW 库的引用和在 GLEW 库之间的引用是相对于您的应用程序包的,因此它可以放在最终用户系统的任何位置,并且仍然可以解析引用。 (默认情况下,引用将使用绝对路径,并且只有在库位于这些确切路径时才会解析。)
【讨论】:
非常感谢!这就是问题所在,事实上,它甚至在 github 页面中被指出:github.com/nigels-com/glew/issues/52 但从未被纠正。 @user1644677 提示:如果有人提供了有用的(以任何方式)答案,请投票以鼓励他们回来帮助他人。如果他们提供了您认为的答案,那么您也应该接受答案。 @***foe SO 用户需要(15以上是关于为啥即使在搜索路径中列出了 GLEW 动态库,Xcode 也无法找到它?的主要内容,如果未能解决你的问题,请参考以下文章