如何让我的编译器找到 X11 头文件?

如何让我的编译器找到 X11 头文件?

我正在尝试按照《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.hglxew.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 开发包?如果这与您的头文件无关,请在新问题中提出此问题。

不要忘记更新您的INCDIRLIBDIR包含新的/usr/local/include目录,例如:

INCDIRS = -I/usr/include -L/usr/include -I/usr/local/include -L/usr/local/include 

相关内容