我有以下使用C ++和OpenGL的makefile。它正在编译,所以我添加了-m32行,以便尝试在x86_64中编译它。现在我得到了同样的错误,但它正在说i386。
我该怎么做才能让这个程序编译?
我正在运行OSX 10.8,以防万一有所不同。
谢谢大家。
.SUFFIXES: .cpp
#Change the following two lines to reflect the locations
# of the GLUT library (.a) and includes on your system
#TOP = /pool/u/class/cs520/Mesa-7.0.3
CFLAGS = -w -s -O2 -ansi -DSHM
XLIBS = -lX11 -lXext -lXmu -lXext -lXmu -lXt -lXi -lSM -lICE
LIBS = -lglut -lGLU -lGL
#INCLS = -I/usr/X11R/include -I/share/mesa/include #-I$(TOP)/include
INCLS = -I/usr/X11R6/include -I/usr/X11/include/GL
LIBDIR = -L/usr/X11/lib -L/usr/X11R6/lib #-L$(TOP)/lib
#GLUT_LIB_LOCATION=/usr/X11R6/lib
#GLUT_INC_LOCATION=/usr/X11R6/include
#CC=gcc
CC=g++
#CPPFLAGS=-I${GLUT_INC_LOCATION} #-w
#GLLIBS=-L${GLUT_LIB_LOCATION} -lglut -lGL -lGLU
#LPATH=${GLUTPATH}
INCS=
libs = ${GLLIBS} -lm
All: terrain
terrain: tg.o tga.o terrain.o
$(CC) $(LPATH) tg.o tga.o terrain.o -m32 ./glui/libglui.a $(libs) -o terrain $(LIBDIR) $(LIBS) $(XLIBS)
.cpp.o:
$(CC) -c -D_LINUX_ $(INCS) $*.cpp $(INCLS)
clean:
rm *.o
tg.o: tg.cpp terrain.h tga.h glui.h
tga.o: tga.cpp tga.h
terrain.o : terrain.cpp terrain.h
我收到以下错误。
g++ -c -D_LINUX_ tga.cpp -I/usr/X11R6/include -I/usr/X11/include/GL
g++ -c -D_LINUX_ terrain.cpp -I/usr/X11R6/include -I/usr/X11/include/GL
g++ tg.o tga.o terrain.o -m32 ./glui/libglui.a -lm -o terrain -L/usr/X11/lib -L/usr/X11R6/lib -lglut -lGLU -lGL -lX11 -lXext -lXmu -lXext -lXmu -lXt -lXi -lSM -lICE
ld: warning: ld: warning: ld: warning: ignoring file tg.o, file was built for unsupported file format ( 0xcf 0xfa 0xed 0xfe 0x 7 0x 0 0x 0 0x 1 0x 3 0x 0 0x 0 0x 0 0x 1 0x 0 0x 0 0x 0 ) which is not the architecture being linked (i386): tg.oignoring file terrain.o, file was built for unsupported file format ( 0xcf 0xfa 0xed 0xfe 0x 7 0x 0 0x 0 0x 1 0x 3 0x 0 0x 0 0x 0 0x 1 0x 0 0x 0 0x 0 ) which is not the architecture being linked (i386): terrain.oignoring file tga.o, file was built for unsupported file format ( 0xcf 0xfa 0xed 0xfe 0x 7 0x 0 0x 0 0x 1 0x 3 0x 0 0x 0 0x 0 0x 1 0x 0 0x 0 0x 0 ) which is not the architecture being linked (i386): tga.o
ld: warning: ignoring file ./glui/libglui.a, file was built for archive which is not the architecture being linked (i386): ./glui/libglui.a
Undefined symbols for architecture i386:
"_main", referenced from:
start in crt1.10.6.o
ld: symbol(s) not found for architecture i386
collect2: ld returned 1 exit status
make: *** [terrain] Error 1
答案 0 :(得分:1)
您正在为MacOS X编译,所以不要使用X11,而是使用原生的OpenGL Framework;编译器/链接器选项为-framework OpenGL
。
你所犯的错误源于你可能已经预编译的库甚至没有针对你特定版本的MacOS X进行编译,即使是MacOS X也是如此。没有编译器开关可以帮助你。