gcc找不到-lGL

gcc找不到-lGL,c,gcc,opengl,glfw,C,Gcc,Opengl,Glfw,我一直在尝试让一个glfw应用程序在LinuxMint上运行,并经历了一段时间。我肯定我遗漏了一些明显的东西,但我已经在互联网上找遍了。值得一提的是,我以前在Windows和Visual Studio上使用过glfw 以下是我的灵感代码: #包括 #包括“GLFW/glfw3.h” int main(){ printf(“你好,世界!\n”); 如果(!glfwInit()){ //初始化失败 } glfwTerminate(); 返回0; } 是的,只是试着初始化glfw 我的bash脚本:

我一直在尝试让一个glfw应用程序在LinuxMint上运行,并经历了一段时间。我肯定我遗漏了一些明显的东西,但我已经在互联网上找遍了。值得一提的是,我以前在Windows和Visual Studio上使用过glfw

以下是我的灵感代码:

#包括
#包括“GLFW/glfw3.h”
int main(){
printf(“你好,世界!\n”);
如果(!glfwInit()){
//初始化失败
}
glfwTerminate();
返回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'
很好,所以我可能缺少一些依赖项。让我们试试看。我发现页面上有这样的内容,并尝试将bash脚本更改为:

#/bin/bash
gcc-Wall-Wextra-g-v-Iinclude-Llib-lglfw3-lGL-o morg src/main.c
我收到一个新错误
/usr/bin/ld:找不到-lGL
。 我查了一下。我发现程序员最终有一个断开的符号链接,他们通过运行
sudoapt-get-install——重新安装libgl1-mesa-dev
修复了该链接。当然,这对我也不起作用。 libGL在我的系统上,我可以在我的文件和其他OpenGL程序中看到它

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


这对其他人来说难吗?我并不是在慢慢失去理智。

这里列出了在全新/裸骨Linux Mint 20(Ulyana)安装上要编译GLFW/OpenGL程序需要做的事情(刚刚在VMWare Workstation Player 16上用全新的Linux Mint 20 ISO安装对其进行了测试):

更新系统依赖项(仅用于良好测量):

安装必要的依赖项:

sudo apt install -y build-essential \
                    libglfw3 \
                    libglfw3-dev
编译(使用
-lglfw
并在
src/main.c
之后指定链接库):

因此,您犯了两个错误:

  • 在LinuxMint上,与
    libglfw3
    包一起安装的GLFW库称为
    libglfw
    ,而不是
    libglfw3
    (请参见
    /usr/lib/x86\u 64-Linux-gnu/libglfw.so
  • 使用GCC编译的任何编译单元或存档必须在以前的编译单元或存档中引用该文件中的符号后指定。因此,在指定
    -lglfw
    -lGL
    之前,必须先放置
    src/main.c
sudo apt install -y build-essential \
                    libglfw3 \
                    libglfw3-dev
gcc -Wall -Wextra -g -v -Iinclude -Llib src/main.c -lglfw -lGL -o morg