不能 link GLFW 库及其头文件 Ubuntu 18.04

Can't link GLFW library with it's header file on Ubuntu 18.04

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

g++ -o output -IL/usr/lib/x86_64-linux-gnu -lglfw driver.o 

我当前的 C++ 文件是:

#include <GLFW/glfw3.h>

int main(void)
{
    GLFWwindow* window;
     if (!glfwInit())
        return -1;


}

我试过使用 glfw 的本地库并设置 -I 和 -L 位置,但似乎没有任何效果。我已经确保 .so 和 .h 文件位于它们各自的位置,但我总是在 运行 make:

时收到此错误
g++ -o output -I/usr/include/GLFW -L/usr/lib/x86_64-linux-gnu -lglfw 

driver.o
driver.o: In function `main':
driver.cpp:(.text+0x5): undefined reference to `glfwInit'
collect2: error: ld returned 1 exit status
Makefile:2: recipe for target 'output' failed
make: *** [output] Error 1

我已经尝试查看所有其他 SO 帖子,他们建议使用大量额外的标志进行编译,但我唯一能从中得出的结论是我的库出现了问题,因为 VScode 检测.h 文件。我怎样才能不出错地编译它?

说明书里都有完美的解释https://www.glfw.org/docs/latest/build_guide.html#build_link_pkgconfig

关键问题出在您的 -I/usr/include/GLFW#include <GLFW/glfw3.h> 中,它们共同给出了路径 /usr/include/GLFW/GLFW/glfw3.h。我想这是通往 glfw3.h 的错误路径。编译成功,因为系统默认包含路径-I/usr/include.

不要手动调整编译器标志,让 pkg-config 做 给你。

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

 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

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