【问题标题】:Can't link GLFW library with it's header file on Ubuntu 18.04无法在 Ubuntu 18.04 上将 GLFW 库与其头文件链接
【发布时间】:2019-04-01 08:52:18
【问题描述】:

我已经使用标准的 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 文件。我怎样才能编译它而不会出现任何错误?

【问题讨论】:

    标签: c++ makefile compiler-errors g++ glfw


    【解决方案1】:

    您是否尝试过交换链接器参数?即用

    编译
    g++ -o output driver.o -lglfw
    

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

    【讨论】:

    • 这部分解决了它。我得到了一个undefined reference to glClear'`,但这是由于我调用的函数的性质。我的最终解决方案是g++ -o output driver.o -lglfw -lGL -lGLU -lglut。我还需要安装 glut 来修复 glClear 错误。
    • 很高兴它现在对你有用。从技术上讲,glfw 应该只使用 GL,所以 -lglfw -lGL 也可能就足够了(如果你自己没有使用 glu 和 glut)
    • 你是对的。我猜我只需要安装它。
    【解决方案2】:

    手册https://www.glfw.org/docs/latest/build_guide.html#build_link_pkgconfig中对所有内容进行了完美解释

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

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

    使用静态版本的 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`
    

    【讨论】:

    • 这在添加 -lGL 并且安装 glut 后也有效。
    • 你又做了一次,不是用 Linux 的方式。只需将 glu 添加到 pkg-config 参数:g++ -o output `pkg-config --cflags glfw3 glu` yourprog.c `pkg-config --libs glfw3 glu`.
    猜你喜欢
    • 1970-01-01
    • 2020-06-03
    • 2018-10-17
    • 1970-01-01
    • 2020-04-28
    • 2013-05-06
    • 1970-01-01
    • 2013-09-11
    • 2014-08-12
    相关资源
    最近更新 更多