不能在xcode,mac os x lion下链接glew

时间:2011-12-12 02:21:21

标签: glew

使用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产生此错误的原因以及如何避免这种错误的任何想法?

2 个答案:

答案 0 :(得分:2)

我自己构建并安装了GLEW,并且在OS X上的makefile中使用普通gcc遇到了同样的问题,并编译了来自https://github.com/jckarter/hello-gl的代码

以下步骤解决了问题:

  1. 我发现我的GLEW库(libGLEW.alibGLEW.dylib)安装在/usr/lib目录中(它肯定由root拥有,其他人拥有r权限)。试图将GLEW_LIB变量从makefile更改为/usr/lib但仍然获得ld: library not found for -lGLEW
  2. 之后我尝试直接将编译的程序与静态库链接(不带-l标志) - 为此我从-lGLEW命令中删除了gcc并将其更改为直接链接t库{{1} - 它编译和链接很好 好的 - 这是首先尝试的工作
  3. 然后我使用以下命令创建了两个指向我的库的链接:

    /usr/lib/libGLEW.a

    ln -s /usr/lib/libGLEW.a /usr/local/lib/libGLEW.a

  4. 最后使用原始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,因此错误“找不到库”