从GLFW编译示例?

问题描述 投票:0回答:1

我正在尝试在Ubuntu 18.04上的glfw-3.2.1 / examples中编译simple.c文件。我使用以下编译命令:

gcc -o simple simple.c glad.c -lglfw3 -lGL -lm -lXrandr -lXi -lX11 -lXxf86vm -lpthread -ldl -lXinerama -lXcursor

我已将glad.c和glad.h复制并粘贴到此示例文件夹中,以及glad.zip附带的include文件夹

但是,当我尝试编译代码时,我得到以下内容:

glad.c:25:10: fatal error: glad/glad.h: No such file or directory
 #include <glad/glad.h>

我不明白为什么会这样,因为我在编译命令中包含了glad.c。

我正在按照本教程设置高兴的https://learnopengl.com/Getting-started/Creating-a-window。不幸的是,这个opengl教程面向MS Windows。有没有更简单的方法来设置Ubuntu(sudo apt install ...)很高兴?

我在这里错过了什么?

谢谢

opengl glfw
1个回答
1
投票

在编译命令中包含glad.c不会带头,它会编译glad.c并从生成的文件中引入对象(如果你安装了一些很高兴的库,它会有点接近-lglad

不幸的是,似乎没有任何ubuntu软件包很高兴,下一个最简单的事情是简单地与glfw一起编译示例(只需在glfw文件夹中运行cmake和make),但我们无论如何都可以修复它。

理解错误

glad.c:25:10: fatal error: glad/glad.h: No such file or directory #include <glad/glad.h> 说“文件glad.c想要一个标题位于高兴/ glad.h,但我找不到它”

这可能是包含路径的问题(gcc没有查看你想要查看的目录),或者文件真的不在这里。

看看glad.csimple.c,他们使用这种语法:

#include <glad/glad.c

包含可以是两种,通过双引号,在这种情况下它们被称为“本地包含”,gcc将在当前目录中查找标题,或者使用尖括号,它们通常是“系统包含”;你需要通过-I选项告诉gcc在哪里寻找它们

解决它

有多种方法可以解决这个问题。

  • 我们可以使用c文件期望的命令行/环境。

首先,尊重zip层次结构,你链接的帖子说应该有两个包含目录,所以你需要将头文件放在zip文件中(glad.h在glad目录中);

然后通过-I.告诉gcc在当前目录中查找包含文件(。是当前目录)

然后命令行看起来像gcc -o simple simple.c glad.c -I. -lglfw3 -l...

要么

  • 改变simple.c和glad.c以包括"glad.h"而不是<glad/glad.h>;然后,文件将自动查找您拥有它的文件。

尝试以与现在相同的方式编译simple.c,你还需要一个linmath.h标题;我不确定它是否很高兴,但很高兴和linmath.h在git树的glfw的deps目录中,我认为它们也在焦油中。

© www.soinside.com 2019 - 2024. All rights reserved.