静态构建glew& linux上的glfw

时间:2011-08-20 14:23:19

标签: linux opengl gcc glew glfw

在我的项目目录中,我有:

  • ./ external / glew,其中包含从源代码编译的glew(运行make)
  • ./ external / glfw,其中glfw也是从源代码编译的(运行make x11)

在我的.c源代码中:

#include <stdio.h>
#include <stdlib.h>

#include "external/glew/include/GL/glew.h"
#include "external/glfw/include/GL/glfw.h"

我尝试使用GCC进行编译:

gcc test1.c -o test1 -DGLEW_STATIC -L./external/glew/lib -lGLEW -lGLU -lGL \
-L./external/glfw/lib/x11 -lglfw

./ external / glew / lib是libGLEW.a所在的位置,而./external/glfw/lib/x11是libglfw.a所在的位置。

它编译没有错误。但后来我尝试运行./test1它给了我:

./test1: error while loading shared libraries: libGLEW.so.1.6: cannot
open shared object file: No such file or directory

我如何编译glew&amp; glfw静态地?

编辑1 感谢帮助人员。在stackoverflow和old nabble中的人们提供了一些帮助后,我设法将它写下来静态链接GLFW和GLEW并将其放在http://www.phacks.net/static-compile-glfw-and-glew/

1 个答案:

答案 0 :(得分:1)

静态库未与-l ...链接,只是添加到链接器源文件中。但是,请仔细检查你真的想静态链接这些。您遇到的问题是* nix系统上的动态链接器默认只查看系统库目录和LD_LIBARY_PATH环境变量中指定的路径。

但是,也可以将相对链接器路径添加到库所在的可执行文件中(--rpath链接器选项)。这样,您可以将库相对于可执行文件发送到目录中,而与系统库无关。如果您这样做,您还应该查看binreloc