Makefile C++;Linux中的多定义
当我创建这些文件时,g++会出现两个错误,即多重定义和以前的定义 生成文件:Makefile C++;Linux中的多定义,makefile,Makefile,当我创建这些文件时,g++会出现两个错误,即多重定义和以前的定义 生成文件: INCLUDE = -I/usr/X11R6/include/ LIBDIR = -L/usr/X11R6/lib FLAGS = -Wall CC = g++ CFLAGS = $(FLAGS) $(INCLUDE) LIBS = -lglut -lGL -lGLU glTestDemo.o: glTestDemo.cpp headers.h $(CC) $(CFLAGS) -c glTest
INCLUDE = -I/usr/X11R6/include/
LIBDIR = -L/usr/X11R6/lib
FLAGS = -Wall
CC = g++
CFLAGS = $(FLAGS) $(INCLUDE)
LIBS = -lglut -lGL -lGLU
glTestDemo.o: glTestDemo.cpp headers.h
$(CC) $(CFLAGS) -c glTestDemo.cpp
display.o: display.cpp headers.h
$(CC) $(CLFAGS) -c display.cpp
glTestDemo: glTestDemo.o display.o
$(CC) $(CFLAGS) glTestDemo.o display.o -o $@ $(LIBDIR) $< $(LIBS) # The initial white space is a tab
all: glTestDemo
clean:
rm glTestDemo *.o
glTestDemo.cpp
#include "headers.h"
int NumPoints = 5000;
int
main (int argc, char** argv)
{
glutInit (&argc, argv);
glutInitDisplayMode (GLUT_RGBA);
glutInitWindowPosition (50, 50);
glutInitWindowSize (600, 600);
glutCreateWindow ("Test title");
glutDisplayFunc (incorrect_display);
glutMainLoop ();
return 0;
}
键入make all后出现的错误消息如下:
/usr/bin/ld: error: glTestDemo.o: multiple definition of 'NumPoints'
/usr/bin/ld: glTestDemo.o: previous definition here
/usr/bin/ld: error: glTestDemo.o: multiple definition of 'main'
/usr/bin/ld: glTestDemo.o: previous definition here
collect2: error: ld returned 1 exit status
make: *** [glTestDemo] Error 1
我制作了一个shell脚本来测试我的C++语法和G++FLAG和OpenGL标志,这是链接使用的。这就是成功。因此,我认为是Makefile导致了错误。但我找不到这方面的问题
您在glTestDemo.o中链接了两次glTestDemo: glTestDemo.o display.o
$(CC) $(CFLAGS) glTestDemo.o display.o -o $@ $(LIBDIR) $< $(LIBS
^^
阅读有关Makefiles中特殊变量的更多信息,您将在glTestDemo.o中链接两次
glTestDemo: glTestDemo.o display.o
$(CC) $(CFLAGS) glTestDemo.o display.o -o $@ $(LIBDIR) $< $(LIBS
^^
阅读有关Makefiles中特殊变量的更多信息
glTestDemo: glTestDemo.o display.o
$(CC) $(CFLAGS) glTestDemo.o display.o -o $@ $(LIBDIR) $< $(LIBS
^^
glTestDemo: glTestDemo.o display.o
$(CC) $(CFLAGS) $^ -o $@ $(LIBDIR) $(LIBS)