Como faço para que meu compilador localize os arquivos de cabeçalho do X11?

4

Estou tentando usar o GLEW e o XServer / X11 em um aplicativo C ++, conforme instruído no Capítulo 15 do OpenGL Superbible, 5ª ed.

Estou usando este 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

e obtendo este resultado:

GLXBasics.cpp:4:18: fatal error: glew.h: No such file or directory

[EDIT:] Depois de consertar um erro de codificação bobo, agora tenho problemas com o X11, e meus problemas de GLEW são históricos.

/usr/bin/ld: cannot find -lXi
/usr/bin/ld: cannot find -lXmu

[/ EDIT]

Se eu comentar a inclusão de glew.h , ele falhará na inclusão de glxew.h .

Eu copiei e colei sudo glew.h e glxew.h to /usr/include/GL . (Que é onde eu acredito que eles deveriam estar?)

Perdoe-me caso eu tenha esquecido de incluir algo na minha pergunta - qualquer coisa que você gostaria de saber ou ver no meu terminal é só pedir.

    
por mynameisnafe 25.06.2013 / 13:53

1 resposta

1
  

GLXBasics.cpp:4:18: fatal error: glew.h: No such file or directory

Eu acho que você tem uma linha lá com algo como a linha abaixo?

#include <glew.h>

Altere isso para

#include <GL/glew.h>

Isso é obrigatório, pois você o copiou no subdiretório GL/ dos caminhos de pesquisa especificados em seu INCDIRS .

  

Eu copiei e colei sudo glew.h e glxew.h para /usr/include/GL

Eu recomendaria usar /usr/local/include/GL para evitar conflitos com os pacotes do Ubuntu.

  

Agora tenho problemas com o X11 e meus problemas de GLEW são históricos.

/usr/bin/ld: cannot find -lXi
/usr/bin/ld: cannot find -lXmu
     

porque eles estão em /usr/local/include ?

Este erro é sobre as bibliotecas (binários), não sobre os cabeçalhos. Caso você os instale manualmente, você deve colocá-los em /usr/local/lib em vez de include/ (para arquivos de cabeçalho). Ou talvez você esteja perdendo os pacotes de desenvolvimento do X aqui? Por favor, pergunte isso em uma nova pergunta se isso não tem nada a ver com seus arquivos de cabeçalho.

Não se esqueça de atualizar seus INCDIR e LIBDIR para incluir os novos diretórios /usr/local/include , por exemplo:

INCDIRS = -I/usr/include -L/usr/include -I/usr/local/include -L/usr/local/include 
    
por gertvdijk 25.06.2013 / 14:17