从 GLFW 编译示例?
Compiling examples from GLFW?
我正在尝试在Ubuntuglfw-3.2.1/examples中编译文件simple.c ] 18.04.我正在使用以下编译命令:
gcc -o simple simple.c glad.c -lglfw3 -lGL -lm -lXrandr -lXi -lX11 -lXxf86vm -lpthread -ldl -lXinerama -lXcursor
我已将 glad.c 和 glad.h 以及 glad.zip
附带的包含文件夹复制并粘贴到此示例文件夹中
但是,当我尝试编译代码时,我得到以下信息:
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 的。有没有更简单的方法来设置 glad on Ubuntu (sudo apt install ...)?
我在这里错过了什么?
谢谢
在编译命令中包含glad.c
不会将header带进来,它会编译glad.c
并从生成的文件中带入object(所以如果你安装了一些 glad 库,它会有点接近 -lglad
)
不幸的是似乎没有任何 ubuntu 包很高兴,下一个最简单的事情就是简单地编译示例和 glfw(只需 运行 cmake 和 glfw 文件夹中的 make ),但我们还是可以解决这个问题。
了解错误
glad.c:25:10: fatal error: glad/glad.h: No such file or directory
#include <glad/glad.h>
说 "the file glad.c wants a header located in glad/glad.h, but I cannot find it"
这可能是包含路径的问题(gcc 没有在您希望它查看的目录中查找),或者文件确实不在此处。
查看 glad.c
和 simple.c
,他们使用以下语法:
#include <glad/glad.c
include 可以有两种,一种是通过 double-quotes,在这种情况下它们被称为 "local includes",gcc 将在当前目录中查找 header,或者使用 angle括号,它们通常是 "system includes";您需要使用 -I
选项
告诉 gcc 在哪里寻找它们
正在修复
有多种方法可以解决这个问题。
- 我们可以使用命令line/environment c 文件期望的。
首先,尊重 zip 层次结构,您链接到的 post 说应该有两个包含目录,因此您需要将 headers 放在它们在 zip 文件中的位置(glad.h 在 glad 目录中);
然后告诉gcc在当前目录中查找包含文件-I.
(.是当前目录)
命令行将类似于 gcc -o simple simple.c glad.c -I. -lglfw3 -l...
或
- 更改 simple.c 和 glad.c 以包含
"glad.h"
而不是 <glad/glad.h>
;然后文件将自动查找您拥有它的文件。
尝试以与现在相同的方式编译 simple.c
后,您还需要一个 linmath.h
header;我不确定它是否带有 glad but glad 和 linmath.h
在 git 树中 glfw 的 deps
目录中,我假设它们也在 tar 中.
我正在尝试在Ubuntuglfw-3.2.1/examples中编译文件simple.c ] 18.04.我正在使用以下编译命令:
gcc -o simple simple.c glad.c -lglfw3 -lGL -lm -lXrandr -lXi -lX11 -lXxf86vm -lpthread -ldl -lXinerama -lXcursor
我已将 glad.c 和 glad.h 以及 glad.zip
附带的包含文件夹复制并粘贴到此示例文件夹中但是,当我尝试编译代码时,我得到以下信息:
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 的。有没有更简单的方法来设置 glad on Ubuntu (sudo apt install ...)?
我在这里错过了什么?
谢谢
在编译命令中包含glad.c
不会将header带进来,它会编译glad.c
并从生成的文件中带入object(所以如果你安装了一些 glad 库,它会有点接近 -lglad
)
不幸的是似乎没有任何 ubuntu 包很高兴,下一个最简单的事情就是简单地编译示例和 glfw(只需 运行 cmake 和 glfw 文件夹中的 make ),但我们还是可以解决这个问题。
了解错误
glad.c:25:10: fatal error: glad/glad.h: No such file or directory
#include <glad/glad.h>
说 "the file glad.c wants a header located in glad/glad.h, but I cannot find it"
这可能是包含路径的问题(gcc 没有在您希望它查看的目录中查找),或者文件确实不在此处。
查看 glad.c
和 simple.c
,他们使用以下语法:
#include <glad/glad.c
include 可以有两种,一种是通过 double-quotes,在这种情况下它们被称为 "local includes",gcc 将在当前目录中查找 header,或者使用 angle括号,它们通常是 "system includes";您需要使用 -I
选项
正在修复
有多种方法可以解决这个问题。
- 我们可以使用命令line/environment c 文件期望的。
首先,尊重 zip 层次结构,您链接到的 post 说应该有两个包含目录,因此您需要将 headers 放在它们在 zip 文件中的位置(glad.h 在 glad 目录中);
然后告诉gcc在当前目录中查找包含文件-I.
(.是当前目录)
命令行将类似于 gcc -o simple simple.c glad.c -I. -lglfw3 -l...
或
- 更改 simple.c 和 glad.c 以包含
"glad.h"
而不是<glad/glad.h>
;然后文件将自动查找您拥有它的文件。
尝试以与现在相同的方式编译 simple.c
后,您还需要一个 linmath.h
header;我不确定它是否带有 glad but glad 和 linmath.h
在 git 树中 glfw 的 deps
目录中,我假设它们也在 tar 中.