我如何链接GLFW
我想把GLFW链接到我的C程序。
文档似乎建议#include
但是我已经安装了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
但我仍然得到undefined reference to 'glfwLoadTexture2D'
如何链接到GLFW并使用glfwLoadTexture2D()
?
#include
对链接器没有任何作用; 它只是引入声明 ,而不是实际的function。
文档表明GLFW使用pkg-config (这并不奇怪; @elmindreda知道她的东西),所以你的编译行应该是这样的:
$ cc `pkg-config --cflags glfw3` -o foo foo.c `pkg-config --static --libs glfw3`
另请注意,由于库使用pkg-config
,因此您不应该“关心”详细信息,例如标头和库文件在特定安装中的位置。 只需询问使用--cflags
和--libs
模式,您将获得返回的正确位置,如上例所示。
你正在混合编译和链接。 如果你缺少标题,你可能会比链接阶段更快地出错。
“未定义的引用”是由链接器未找到的符号产生的。 最可能的原因是你没有告诉gcc
它应该链接到GLFW库:
gcc myfile.c -lglfw