我正在尝试在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 ...)很高兴?
我在这里错过了什么?
谢谢
在编译命令中包含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.c
和simple.c
,他们使用这种语法:
#include <glad/glad.c
包含可以是两种,通过双引号,在这种情况下它们被称为“本地包含”,gcc将在当前目录中查找标题,或者使用尖括号,它们通常是“系统包含”;你需要通过-I
选项告诉gcc在哪里寻找它们
有多种方法可以解决这个问题。
首先,尊重zip层次结构,你链接的帖子说应该有两个包含目录,所以你需要将头文件放在zip文件中(glad.h在glad目录中);
然后通过-I.
告诉gcc在当前目录中查找包含文件(。是当前目录)
然后命令行看起来像gcc -o simple simple.c glad.c -I. -lglfw3 -l...
要么
"glad.h"
而不是<glad/glad.h>
;然后,文件将自动查找您拥有它的文件。尝试以与现在相同的方式编译simple.c
,你还需要一个linmath.h
标题;我不确定它是否很高兴,但很高兴和linmath.h
在git树的glfw的deps
目录中,我认为它们也在焦油中。