2013-09-27 39 views
1

我想链接GLFW到我的C程序。我该如何链接GLFW

该文档似乎表明#include<GLFW/glfw3.h>但是我已经安装了2.7.2(从我的发行版的存储库),并没有这样的头文件:

find/-name *glfw* 2> /dev/null 
/usr/lib/libglfw.so.2.6 
/usr/lib/libglfw.a 
/usr/lib/libglfw.so 
/usr/lib/pkgconfig/libglfw.pc 
/usr/lib/libglfw.so.2 
/usr/include/GL/glfw.h 
/usr/share/doc/libglfw-dev 
/usr/share/doc/libglfw2 
/var/cache/apt/archives/libglfw2_2.7.2-1_i386.deb 
/var/cache/apt/archives/libglfw-dev_2.7.2-1_i386.deb 
/var/lib/dpkg/info/libglfw2.list 
/var/lib/dpkg/info/libglfw2.postinst 
/var/lib/dpkg/info/libglfw-dev.md5sums 
/var/lib/dpkg/info/libglfw2.postrm 
/var/lib/dpkg/info/libglfw2.md5sums 
/var/lib/dpkg/info/libglfw2.shlibs 
/var/lib/dpkg/info/libglfw-dev.list 

我试图#include<GL/glfw.h>但是我还是undefined reference to 'glfwLoadTexture2D'

我如何链接到GLFW并使用glfwLoadTexture2D()

回答

3

一个#include对链接器不做任何事情;它只是带来声明,而不是实际的功能。

The documentation表明GLFW使用pkg-config(不奇怪; @elmindreda知道她的东西),所以你的编译行应该是这样的:

$ cc `pkg-config --cflags glfw3` -o foo foo.c `pkg-config --static --libs glfw3` 

还要注意,由于该库使用pkg-config,你不应该以“关注”有关详细信息,例如标题和库文件在特定安装中的位置。只要问问使用--cflags--libs模式,您将得到正确的位置返回,如上例所示。

+0

好吧,我明显缺少一些基本的东西,因为我认为我找到了报头'GL/glfw.h', '-lGL'就足以链接到它:/ – jsj

+2

@ trideceth12'-l'命令行选项恰好链接了一个库,如果你说'GL'它将与'libGL.so'链接,而不是'all在一些名为'GL'的文件夹下的库。也请阅读编译器文档。 – unwind

1

您正在混合编译和链接。如果你错过了标题,你可能会比链接阶段早得多。

“未定义的引用”是链接器找不到符号的结果。最可能的原因是你没有告诉gcc,它应该链接到GLFW库:

gcc myfile.c -lglfw 
相关问题