在我的项目目录中,我有:
在我的.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/上
答案 0 :(得分:1)
静态库未与-l ...链接,只是添加到链接器源文件中。但是,请仔细检查你真的想静态链接这些。您遇到的问题是* nix系统上的动态链接器默认只查看系统库目录和LD_LIBARY_PATH环境变量中指定的路径。
但是,也可以将相对链接器路径添加到库所在的可执行文件中(--rpath
链接器选项)。这样,您可以将库相对于可执行文件发送到目录中,而与系统库无关。如果您这样做,您还应该查看binreloc