OS X Yosemite 10.10.5 Xcode 6.4
背景:我需要使用 OpenGL加载库,例如 GLEW ,因为我的计算机不支持 OpenGl 版本我在学习。因此,我下载了GLEW-zip文件并使用 make 来安装动态库。
现在:我正在尝试在Xcode中使用这个动态链接库(libGLEW.1.13.0.dylib),但是我收到了以下错误" ld:找不到-lGLEW"的库。但是,我已经告诉Xcode在哪里找到它:
什么是或可能导致此问题?
问题:动态库安装在错误的目录/usr/lib
中。应该在/usr/local/lib
。 @Ken Thomases的完整解释如下。
解决方案:将Makefile的GLEW_DEST ?= /usr
更改为GLEW_DEST ?= /usr/local
。这里简要提到http://glew.sourceforge.net/install.html
答案 0 :(得分:1)
我认为问题的基础是你将GLEW安装到/ usr / lib中。通常,应为系统库保留/ usr / lib。第三方库应该转到别处,例如/ usr / local / lib。 GLEW构建系统可能允许您在configure或“make install”期间指定/ usr / local的“前缀”。您必须查阅其文档。
/ usr / lib错误的一个原因是因为使用Xcode的典型构建使用link命令的-isysroot
选项。这会将基于标准系统目录的路径重定向到SDK目录。因此,对/ usr / lib的引用被解释为对/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/lib的引用。这就是基于SDK的开发的基础。
显然,/ Applications / Xcode.app / Constate / Developer /平台/ MacOSX.platform /Developer / SDKs / MacOSX10.10.sdk / usr / lib不包含您的libGLEW.1.13.0.dylib重新尝试链接到。因此链接错误。
因此,您可以将GLEW安装到/ usr / local并将其链接。但是,您必须了解这不会导致可以分发给其他系统的可执行文件。那些其他系统将没有GLEW,因此您的程序将无法加载。您真正需要做的是将GLEW构建为一个框架,并将其与之链接并将其作为应用程序包的一部分发布。或者,如果GLEW无法构建为框架,则需要构建它并将其“安装”到系统中而不是“安装”到私有构建目录中,然后将该构建目录复制到应用程序包中。您还需要确保GLEW库中的引用与您的应用程序包相关,因此它可以放在最终用户系统的任何位置,并且仍然可以解析引用。 (默认情况下,引用将使用绝对路径,只有在库位于这些确切路径时才会解析。)