【问题标题】:gcc compiler in cygwin not finding X window directorycygwin中的gcc编译器找不到X窗口目录
【发布时间】:2014-02-28 00:26:17
【问题描述】:

我正在尝试编译一个项目,该项目在我的 /usr/include 目录中包含来自 X11 的各种文件。它可以在远程 linux 机器上正常编译,但是当我尝试运行 make 文件时出现以下错误:

$ make clean; make
rm -f xrobot.o mobile_base.o arm.o eye.o object.o 4D_math.o Xkw/Canvas.o Xkw/Sli
der.o Xkw/Xkw.o lib/simulator.a *~
cd ./Xkw; make; cd ..; \

make[1]: Entering directory `C:/cygwin/home/Gene/roger/mmRogerSpring2014/RogerSi
mulator/Xkw'
gcc -c -g  -I. -I/usr/include/X11 -I/usr/X11R6/include Canvas.c
Canvas.c:9:22: fatal error: X11/Xos.h: No such file or directory
compilation terminated.
make[1]: *** [Canvas.o] Error 1
make[1]: Leaving directory `C:/cygwin/home/Gene/roger/mmRogerSpring2014/RogerSim
ulator/Xkw'
gcc -c -g -I. -I/usr/X11R6/include -I/usr/include/X11 -I./include  xrobot.c
In file included from xrobot.c:11:0:
Xkw/Xkw.h:12:27: fatal error: X11/Intrinsic.h: No such file or directory
compilation terminated.
make: *** [xrobot.o] Error 1

但是,我知道文件在那里,我可以做到

$ cat /usr/include/X11/Xos.h

然后读取文件。

这是我的制作文件:

# replace this with the top of your X11 tree
# X11 = /exp/rcf/share/X11R5
X11 = /usr/X11R6

############## do not change below this line ####################

ROGERINCDIR = ./include

XINCDIR = $(X11)/include
XLIBDIR = $(X11)/lib 
EDLAB_XINCDIR = /usr/include/X11

XAWLIB = -lXaw
XMULIB = -lXmu
XTOOLLIB = -lXt
XLIB = -lX11
XEXTLIB = -lXext
MATHLIB = -lm

LIBS =  -L$(XLIBDIR) $(XAWLIB) $(XMULIB) $(XTOOLLIB) $(XLIB) $(XEXTLIB) \
    $(MATHLIB)

RM = rm -f
CC = gcc
#CCFLAGS = -c -O $(OPT) -I. -I$(XINCDIR)
CCFLAGS = -c -g -I. -I$(XINCDIR) -I$(EDLAB_XINCDIR) -I$(ROGERINCDIR) 

.SUFFIXES:  .c  .o

.c.o:   
    $(CC) $(CCFLAGS) $<

############## do not change above this line ####################

ROGERLIB = lib/simulator.a

OFILES1 = xrobot.o \
        mobile_base.o \
        arm.o \
 eye.o \
         object.o \
     4D_math.o

XKWOFILES = Xkw/Canvas.o Xkw/Slider.o Xkw/Xkw.o
#XKWOFILES = Xkw/Canvas.o Xkw/Xkw.o

HFILES = Roger.h simulate.h control.h modes.h

all:  subdirs  $(OFILES1) $(ROGERLIB)

subdirs:
cd ./Xkw; make; cd ..; \

#$(ROGERLIB):   $(OFILES1)
#   $(CC) -o $@ $(OFILES1) $(XKWOFILES) $(LIBS)

$(ROGERLIB):    $(OFILES1) $(XKWOFILES)
    ar r $(ROGERLIB) $(OFILES1) $(XKWOFILES)

clean:
    $(RM) $(OFILES1) $(XKWOFILES) $(ROGERLIB) *~


#mobile_base.o: Roger.h simulate.h control.h 

#arm.o: Roger.h simulate.h control.h

#eye.o: Roger.h simulate.h control.h

#object.o:  Roger.h simulate.h control.h

#xrobot.o:  Xkw/Xkw.h Roger.h simulate.h control.h

#tele_interface.o:  Roger.h simulate.h control.h modes.h

编辑:我已将 make 文件顶部的 X11 变量更改为 /usr/include 而不是 /usr/X11R6。没什么区别。

编辑 2:这是上述替代包含路径的错误。

$ make clean; make
rm -f xrobot.o mobile_base.o arm.o eye.o object.o 4D_math.o Xkw/Canvas.o Xkw/Sli
der.o Xkw/Xkw.o lib/simulator.a *~
cd ./Xkw; make; cd ..; \

make[1]: Entering directory `C:/cygwin/home/Gene/roger/mmRogerSpring2014/RogerSi
mulator/Xkw'
gcc -c -g  -I. -I/usr/include/X11 -I/usr/X11R6/include Canvas.c
Canvas.c:9:22: fatal error: X11/Xos.h: No such file or directory
compilation terminated.
make[1]: *** [Canvas.o] Error 1
make[1]: Leaving directory `C:/cygwin/home/Gene/roger/mmRogerSpring2014/RogerSim
ulator/Xkw'
gcc -c -g -I. -I/usr/include/include -I/usr/include/X11 -I./include  xrobot.c
In file included from xrobot.c:11:0:
Xkw/Xkw.h:12:27: fatal error: X11/Intrinsic.h: No such file or directory
compilation terminated.
make: *** [xrobot.o] Error 1

【问题讨论】:

  • 我在你的包含路径中看不到 /usr/include(没有 X11 部分)......并且错误消息使它看起来像 #include 在指令中有 /X11/ 部分。 ..
  • 我应该在我的 OP 中提到,但我已将 make 文件顶部的 X11 变量更改为 /usr/include 而不是 /usr/X11R6。没什么区别。
  • 那会为 XINCDIR 提供/usr/include/include...但是/usr/include 呢?我也没有在您的构建消息顶部的编译器命令行中看到它..
  • 我已经更新了我的帖子,其中出现了我在替代路径中遇到的错误。你可以清楚地看到里面的-I/usr/include/X11。
  • make 使用的是 DOS 路径而不是 *NIX 路径,因此看起来您使用的是 MinGW make 而不是 Cygwin 的,在这种情况下 gcc 也可能是 MinGW版本。

标签: c windows gcc cygwin x11


【解决方案1】:

您应该将 X11/Xos.h 包含为:

#include

如果您将其包含为:

#include "X11/Xos.h"

它将相对于源文件进行搜索,而不是在 -I 目录中。

这可能是问题所在。

【讨论】:

  • 不幸的是,所有引用 X11 的包含语句都已在尖括号中。
  • 你弄明白了吗?
  • 不。最终使用 Mint 在 VM 中运行它。
猜你喜欢
  • 2012-11-10
  • 1970-01-01
  • 1970-01-01
  • 2020-09-05
  • 2015-03-30
  • 2014-04-29
  • 1970-01-01
  • 1970-01-01
  • 2020-08-06
相关资源
最近更新 更多