Q:

Which File Is Missing? "i686-apple-darwin11-llvm-g++-4.2: No such file or directory"

I'm getting the following error from my compiler:
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

However, I am not sure which file it's saying is not there. Does it mean tracecone? or one of the library files? Either way, it looks like everything is right where it should be.
What could cause this error?
Here is my make file:
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) 

Thanks in advance.

A:

You should place your target right after -o flag:
g++ -o $@ -m32 ...

Flag -o means output and in case of g++ -o tracecone ... you'll specify tracecone as output, but in case g++ -o -m32 tracecone ... you are specifying -m32 as output and tracecone as one of the object files. And g++ says that there is no such object file because there is actually no such file.

