哪个文件丢失了? “i686-apple-darwin11-llvm-g ++ - 4.2:没有这样的文件或目录”

时间:2013-04-22 03:38:41

标签: macos g++

我的编译器出现以下错误:

g++ -c -m32 tracecone.cpp -I/usr/X11R6/include -I/usr/X11/include/GL -I/Users/owner/Documents/raytrace/Graphics -I../RayTrace -I/Users/owner/Documents/raytrace/Graphics -I/Users/owner/Documents/raytrace/VrMath -I/Users/owner/Documents/raytrace/OpenglRender -I/Users/owner/Documents/raytrace/RaytraceMgr 
g++ -o -m32 tracecone  ../RayTrace/RayTraceData.o tracecone.o  /Users/owner/Documents/raytrace/OpenglRender/GlutRenderer.o /Users/owner/Documents/raytrace/RaytraceMgr/SceneDescription.o  -L/usr/X11/lib -L/usr/X11R6/lib -L/Users/owner/Documents/raytrace/Graphics -L/Users/owner/Documents/raytrace/VrMath -lglut -lGLU -lGL -lX11 -lXext -lXmu -lXext -lXmu -lXt -lXi -lSM -lICE -lraygraph -lvrmath
i686-apple-darwin11-llvm-g++-4.2: tracecone: No such file or directory
make: *** [tracecone] Error 1

但是,我不确定它所说的文件不存在。这是tracecone吗?或其中一个库文件?无论哪种方式,它看起来都应该是正确的。

什么可能导致此错误?

这是我的make文件:

PROG    = tracecone
RBASE= /Users/owner/Documents/raytrace
GDIR=$(RBASE)/Graphics
MDIR=$(RBASE)/VrMath
ODIR=$(RBASE)/OpenglRender
MANDIR=$(RBASE)/RaytraceMgr

CFLAGS  = -w -s -O2 -ansi -DSHM 
XLIBS   = -lX11 -lXext -lXmu -lXext -lXmu -lXt -lXi -lSM -lICE
LIBS    = -lglut -lGLU -lGL
RAYLIBS = -lraygraph -lvrmath
INCLS   = -I/usr/X11R6/include -I/usr/X11/include/GL
INCL1   = -I$(GDIR) -I../RayTrace -I$(GDIR) -I$(MDIR) -I$(ODIR) -I$(MANDIR) 
LIBDIR  = -L/usr/X11/lib -L/usr/X11R6/lib -L$(GDIR) -L$(MDIR)
#source codes
SRCS = $(PROG).cpp 

#substitute .cpp by .o to obtain object filenames
OBJS = $(SRCS:.cpp=.o)
#in ../Graphics
OBJOD = $(ODIR)/GlutRenderer.o
OBJO = GlutRenderer.o
OBJMAND = $(MANDIR)/SceneDescription.o
OBJMAN = SceneDescription.o
OBJ_temp = ../RayTrace/RayTraceData.o

#$< evaluates to the target's dependencies, 
#$@ evaluates to the target

$(PROG): $(OBJS)  
    g++ -o -m32 $@  $(OBJ_temp) $(OBJS)  $(OBJOD) $(OBJMAND)  $(LIBDIR) $(LIBS) $(XLIBS) $(RAYLIBS)

$(OBJS): 
    g++ -c -m32 $*.cpp $(INCLS) $(INCL1)

$(OBJ1):
    cd $(GDIR); g++ -m32 -c $*.cpp $(INCLS)

$(OBJM):
    cd $(MDIR); g++ -m32 -c $*.cpp $(INCLS)

$(OBJO):
    cd $(ODIR); g++ -m32 -c $*.cpp $(INCLS)

$(OBJMAN):
    cd $(MANDIR); g++ -m32 -c $*.cpp $(INCLS)
clean:
    rm $(OBJS) 

clean1:
    rm $(OBJD1) 

提前致谢。

1 个答案:

答案 0 :(得分:2)

您应该将目标放在-o标志之后: g++ -o $@ -m32 ...
标记-o表示输出,如果是g++ -o tracecone ...,您将tracecone指定为输出,但如果g++ -o -m32 tracecone ...您指定-m32作为输出,tracecone作为目标文件之一。并且g ++说没有这样的目标文件,因为实际上没有这样的文件。