![如何让我的编译器找到 X11 头文件?](https://linux22.com/image/1099396/%E5%A6%82%E4%BD%95%E8%AE%A9%E6%88%91%E7%9A%84%E7%BC%96%E8%AF%91%E5%99%A8%E6%89%BE%E5%88%B0%20X11%20%E5%A4%B4%E6%96%87%E4%BB%B6%EF%BC%9F.png)
我正在尝试按照《OpenGL Superbible》第 5 版第 15 章中的说明在 C++ 应用程序中使用 GLEW 和 XServer/X11。
我正在使用这个 Makefile:
LIBDIRS = -L/usr/X11R6/lib -L/usr/X11R6/lib64 -L/usr/local/lib
INCDIRS = -I/usr/include -L/usr/include
CC = g++
CFLAGS = $(COMPILERFLAGS) -g $(INCDIRS)
LIBS = -lX11 -lXi -lXmu -lm -lGLEW -lGLU -lGL
GLXBasics: GLXBasics.o
$(CC) $(CFLAGS) -o GLXBasics $(LIBDIRS) GLXBasics.cpp $(LIBS)
clean:
rm -f *.o
并得到这个结果:
GLXBasics.cpp:4:18: fatal error: glew.h: No such file or directory
[编辑:] 修复了一个愚蠢的编码错误后,我现在遇到了 X11 问题,而我的 GLEW 问题已经成为历史。
/usr/bin/ld: cannot find -lXi
/usr/bin/ld: cannot find -lXmu
[/编辑]
如果我注释掉的包含glew.h
,则包含会失败glxew.h
。
我已通过 sudo 复制并粘贴了glew.h
和glxew.h
到/usr/include/GL
。 (我认为它们应该在哪里?)
如果我忘记在问题中包含一些内容,请原谅我 - 您想知道或想知道我的终端上的任何内容,只需询问即可。
答案1
GLXBasics.cpp:4:18: fatal error: glew.h: No such file or directory
我猜你那里有一行类似下面的内容?
#include <glew.h>
将其更改为
#include <GL/glew.h>
这是必需的,因为您已将其复制到GL/
中指定的搜索路径的子目录中INCDIRS
。
我已经通过 sudo 复制并
glew.h
粘贴glxew.h
到/usr/include/GL
我建议使用,/usr/local/include/GL
因为这样可以避免与 Ubuntu 包冲突。
我现在遇到了 X11 问题,而我的 GLEW 问题已经成为历史。
/usr/bin/ld: cannot find -lXi /usr/bin/ld: cannot find -lXmu
因为他们在
/usr/local/include
?
此错误与库(二进制文件)有关,与头文件无关。如果您手动安装它们,则应将它们放在/usr/local/lib
而不是 中include/
(这是针对头文件的)。或者也许您只是缺少 X 开发包?如果这与您的头文件无关,请在新问题中提出此问题。
不要忘记更新您的INCDIR
并LIBDIR
包含新的/usr/local/include
目录,例如:
INCDIRS = -I/usr/include -L/usr/include -I/usr/local/include -L/usr/local/include