【问题标题】:gcc cannot find -lGLgcc 找不到 -lGL
【发布时间】:2021-01-17 18:59:30
【问题描述】:

我一直在尝试让一个 glfw 应用程序在 Linux Mint 上运行并忍受了一段时间。我确定我遗漏了一些明显的东西,但我已经在互联网上查看了所有内容。我之前在 Windows 和 Visual Studio 上使用过 glfw。

这是我的令人兴奋的代码:

#include <stdio.h>
#include "GLFW/glfw3.h"

int main(){
    printf("hello world!\n");
    if (!glfwInit()){
        // Initialization failed
    }
    glfwTerminate();

    return 0;
}

是的,只是试图初始化 glfw。

我的 bash 脚本:

#!/bin/bash
gcc -Wall -Wextra -g -v -Iinclude -Llib -o morg src/main.c

所以当我运行那个 bash 脚本时,我得到了这个错误:

/home/[username]/Documents/morg/src/main.c:6: undefined reference to `glfwInit'
/home/[username]/Documents/morg/src/main.c:9: undefined reference to `glfwTerminate'

很好,所以我可能缺少一些依赖项。让我们试试看。我找到this SO 页面并通过实验将 bash 脚本更改为:

#!/bin/bash
gcc -Wall -Wextra -g -v -Iinclude -Llib -lglfw3 -lGL -o morg src/main.c

我收到一个新错误/usr/bin/ld: cannot find -lGL。 我查了一下。我发现this 程序员最终有一个损坏的符号链接,他们通过运行sudo apt-get install --reinstall libgl1-mesa-dev 修复了该链接。当然,这对我也不起作用。 libGL 在我的系统上,我可以在我的文件中看到它,并且其他 OpenGL 程序工作正常。

此外,关于 glfw 需要什么依赖项,我得到了相互矛盾的信息。例如我遇到了g++ Test.cpp -lglfw -lGL -lm -lX11 -lpthread -lXi -lXrandr -ldl。据我所知,实际的 glfw 文档没有提到任何这些。有没有人有在 GNU Linux 上使用 glfw 的参考、文档、指南或教程。我找到了this 指南,可以预见它也不起作用。

对其他人来说很难吗?我并没有慢慢失去理智。

【问题讨论】:

    标签: c gcc opengl glfw


    【解决方案1】:

    这里列出了在全新/准系统 Linux Mint 20 (Ulyana) 安装上需要执行的操作,以便编译 GLFW/OpenGL 程序(刚刚在 VMWare Workstation Player 上使用全新的 Linux Mint 20 ISO 安装对其进行了测试16):

    更新系统依赖项(只是为了更好的衡量):

    sudo apt update && sudo apt upgrade -y
    

    安装必要的依赖:

    sudo apt install -y build-essential \
                        libglfw3 \
                        libglfw3-dev
    

    编译(使用-lglfw 并在src/main.c 之后指定链接库!):

    gcc -Wall -Wextra -g -v -Iinclude -Llib src/main.c -lglfw -lGL -o morg
    

    所以,你犯了两个错误:

    • 使用libglfw3 包安装的 GLFW 库在 Linux Mint 上称为 libglfw,而不是 libglfw3(请参阅 /usr/lib/x86_64-linux-gnu/libglfw.so
    • 任何用于使用 GCC 编译的编译单元或存档必须在该文件中的符号在以前的编译单元或存档中被引用后指定。因此,您必须在指定-lglfw-lGL 之前输入src/main.c

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多