我如何链接GLFW

时间:2013-09-27 11:35:03

标签: c opengl glfw

我正在尝试将GLFW链接到我的C程序。

文档似乎建议#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()

2 个答案:

答案 0 :(得分: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模式,您将获得返回的正确位置,如上例所示。

答案 1 :(得分:1)

您正在混合编译和链接。如果你缺少标题,你可能会比链接阶段更快地出错。

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

 gcc myfile.c -lglfw