C++ Can';t链接GLFW库与it';Ubuntu 18.04上的s头文件

C++ Can';t链接GLFW库与it';Ubuntu 18.04上的s头文件,c++,makefile,compiler-errors,g++,glfw,C++,Makefile,Compiler Errors,G++,Glfw,我已经使用标准的sudo apt get等在Ubuntu上安装了libglfw3 dev:amd64包。我下面的编译行是: 我当前的C++文件是: 我试过查看所有其他SO帖子,他们建议使用大量额外的标志进行编译,但我从中得出的唯一结论是,由于VScode检测到.h文件,我的库出现了问题。如何编译此文件而不出现任何错误?手册中对所有内容进行了完美的解释 关键问题在于您的-I/usr/include/GLFW和#include提供了路径的总和/usr/include/GLFW/glfw3.h。我

我已经使用标准的sudo apt get等在Ubuntu上安装了libglfw3 dev:amd64包。我下面的编译行是:

我当前的C++文件是:


我试过查看所有其他SO帖子,他们建议使用大量额外的标志进行编译,但我从中得出的唯一结论是,由于VScode检测到.h文件,我的库出现了问题。如何编译此文件而不出现任何错误?

手册中对所有内容进行了完美的解释

关键问题在于您的
-I/usr/include/GLFW
#include
提供了路径的总和
/usr/include/GLFW/glfw3.h
。我想这是通往
glfw3.h
的错误路径。编译成功,因为系统默认包含路径
-I/usr/include

不要手动调整编译器标志,让
pkg config
Do 这是给你的

使用GLFW库的静态版本时,典型的编译和链接命令行可能如下所示:

 g++ -o output `pkg-config --cflags glfw3` yourprog.c `pkg-config --static --libs glfw3`
如果您使用的是GLFW库的共享版本,只需省略--static标志

 g++ -o output `pkg-config --cflags glfw3` yourprog.c `pkg-config --libs glfw3`

您是否尝试过交换链接器参数?也就是说,使用

g++ -o output driver.o -lglfw

链接器从左到右遍历文件,在处理库之前,它必须知道需要库中的哪些符号。

这部分解决了这个问题。我得到了对glClear`的
未定义引用,但这是由于我调用的函数的性质。我的最终解决方案是
g++-o输出驱动程序.o-lglfw-lGL-lGLU-lglut
。我还需要安装glut来修复glClear错误。很高兴它现在能为您工作。从技术上讲,glfw应该只使用GL,所以-lglfw-lGL可能也足够了(如果您自己没有使用glu和glut),您是正确的。我想我只是需要安装它。在添加了
-lGL
之后,这起到了作用,并且安装了glut也起到了作用。你又一次这样做了,不是用Linux方式。只需将glu添加到pkg配置参数:
g++-o输出`pkg配置--cflags glfw3 glu`yourprog.c`pkg配置--libs glfw3 glu`
 g++ -o output `pkg-config --cflags glfw3` yourprog.c `pkg-config --static --libs glfw3`
 g++ -o output `pkg-config --cflags glfw3` yourprog.c `pkg-config --libs glfw3`
g++ -o output driver.o -lglfw