使用glew,我正在尝试链接简单程序
#include </usr/include/GL/glew.h>
int main (int argc, const char * argv[])
{
glewInit();
return 0;
}
在OSC Lion下的XCode 4中报告错误:
ld: library not found for -lGLEW.1.7.0
Command /Developer/usr/bin/clang++ failed with exit code 1
但是,错误输出还会报告链接器的以下标志
-mmacosx-version-min=10.7 -L/usr/lib -lGLEW.1.7.0 -lglfw -framework OpenGL -framework Cocoa
实际上,libGLEW.1.7.0确实驻留在/ usr / lib
中此外,如果我尝试用
手动构建程序 gcc -L/usr/lib -lGLEW.1.7.0 main.cpp
我收到一个a.out文件,没有报告任何错误(如果运行会导致分段错误,但可能会出现这种情况)
有关可能导致XCode产生此错误的原因以及如何避免这种错误的任何想法?
答案 0 :(得分:2)
我自己构建并安装了GLEW,并且在OS X上的makefile中使用普通gcc遇到了同样的问题,并编译了来自https://github.com/jckarter/hello-gl的代码
以下步骤解决了问题:
libGLEW.a
和libGLEW.dylib
)安装在/usr/lib
目录中(它肯定由root拥有,其他人拥有r权限)。试图将GLEW_LIB
变量从makefile更改为/usr/lib
但仍然获得ld: library not found for -lGLEW
-lGLEW
命令中删除了gcc
并将其更改为直接链接t库{{1} - 它编译和链接很好
好的 - 这是首先尝试的工作然后我使用以下命令创建了两个指向我的库的链接:
/usr/lib/libGLEW.a
ln -s /usr/lib/libGLEW.a /usr/local/lib/libGLEW.a
最后使用原始makefile(仅将ln -s /usr/lib/libGLEW.dylib /usr/local/lib/libGLEW.dylib
变量更改为GLEW_LIB
)。
可能GLEW的/usr/local/lib
应该直接将库放到make install
。
答案 1 :(得分:1)
(根据leppie的建议,我已将其从问题的编辑中删除并将其作为答案发布)
我可能已经找到了我在原帖中认为不重要的一些细节的答案。所以这里,以防其他人可能遇到类似的问题。
显然,XCode4项目默认使用clang ++,在链接阶段接受参数-isysroot(显然ld不接受)。
现在,如果你的构建设置(就我的情况而言)你的Base SDK被定义为当前Mac OS以外的东西,那么将引入参数-isysroot,其中包含指向该SDK的目录的值,因此(这是我的猜测)将其添加到您可能包含-L的所有其他lib目录。
在我的情况下,-L / usr / lib实际上变成了-L / Developer / SDKs / MacOSX10.7.sdk / usr / lib,它确实存在并且不包含libGLEW,因此错误“找不到库”