From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 7066 invoked by alias); 1 Dec 2007 12:43:06 -0000 Received: (qmail 7057 invoked by uid 22791); 1 Dec 2007 12:43:05 -0000 X-Spam-Check-By: sourceware.org Received: from adsl-70-234-122-254.dsl.tul2ok.sbcglobal.net (HELO baby.espersunited.com) (70.234.122.254) by sourceware.org (qpsmtpd/0.31) with ESMTP; Sat, 01 Dec 2007 12:43:00 +0000 Received: from camille.espersunited.com ([192.168.1.3]) by baby.espersunited.com with esmtp (Exim 4.68) (envelope-from ) id 1IyRgM-0005eK-Lr; Sat, 01 Dec 2007 06:42:55 -0600 Subject: Re: Undefined References From: Michael Sullivan To: Tom Browder Cc: gcc-help@gcc.gnu.org In-Reply-To: <8bc817ee0712010422g139eefcfxea13bdec38b79b42@mail.gmail.com> References: <8bc817ee0711302043t7eefb94eub6423ca23a449175@mail.gmail.com> <1196508719.25393.8.camel@camille.espersunited.com> <8bc817ee0712010422g139eefcfxea13bdec38b79b42@mail.gmail.com> Content-Type: text/plain Date: Sat, 01 Dec 2007 12:43:00 -0000 Message-Id: <1196512977.25400.20.camel@camille.espersunited.com> Mime-Version: 1.0 X-Mailer: Evolution 2.12.1 Content-Transfer-Encoding: 7bit X-SpamScore: 0.0 (/) X-SpamReport: baby.espersunited.com detected 0.0 spam points 5.0 points required to mark as spam Mailing-List: contact gcc-help-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-help-owner@gcc.gnu.org X-SW-Source: 2007-12/txt/msg00015.txt.bz2 On Sat, 2007-12-01 at 06:22 -0600, Tom Browder wrote: > On Dec 1, 2007 5:31 AM, Michael Sullivan wrote: > > On Fri, 2007-11-30 at 22:43 -0600, Tom Browder wrote: > > > On Nov 30, 2007 10:28 PM, Michael Sullivan wrote: > > > > > > > > On Fri, 2007-11-30 at 22:01 -0600, Tom Browder wrote: > > > > > On Nov 30, 2007 7:26 PM, Michael Sullivan wrote: > > > > > > I'm having trouble building my project. This is my first project I've > > > > > > worked on that uses make, so I'm having a lot of problems with it. > > > > > > Here's my Makefile: > ... > > > > In file included from battle.cpp:4: > > > > /usr/local/include/SDL/SDL_gfxPrimitives.h:17:17: error: SDL.h: No such > > > > file or directory > > > > > > You may need the -I (hyphen uppercase i) option to tell gcc where to > > > find SDL.h. For instance: > > Look carefully at the gcc manual and the options to g++, the '-I' > option, which may be used multiple times, gives a path to search for > include files. > > Now, I can't help the warning at the moment, but the show stoppers are > the undefined references which are probably defined in the missing > libraries you asked for on the line: > > LIBS=`sdl-config --cflags --libs` -lSDL_image -lSDL_gfx -lSDL_ttf > > You probably need to add one or more '-L' options which you use to > tell gcc where to find libraries (for details, see the gcc manual). > > -Tom > > Tom Browder > Niceville, Florida > USA Actually now, and I find this very strange; I rm *.o and run 'make all' and it gives me this output: battle.cpp: In member function 'SDL_Surface* battle::drawString(int, int, char*)': battle.cpp:72: warning: missing initializer for member 'SDL_Color::unused' rm: cannot remove `*~': No such file or directory make: *** [battle.o] Error 1 but battle.o is created. character.o is not. The second time I run make all, both character.o and battle.o exist. The third time I run make all, it gives me the following errors: battle.o: In function `battle::battle()': battle.cpp:(.text+0x9e3): undefined reference to `Character::Character()' battle.cpp:(.text+0xb35): undefined reference to `Character::~Character()' battle.cpp:(.text+0xb83): undefined reference to `Character::~Character()' battle.cpp:(.text+0xbd1): undefined reference to `Character::~Character()' battle.cpp:(.text+0xc16): undefined reference to `Character::~Character()' battle.o: In function `battle::battle()': battle.cpp:(.text+0xf19): undefined reference to `Character::Character()' battle.cpp:(.text+0x106b): undefined reference to `Character::~Character()' battle.cpp:(.text+0x10b9): undefined reference to `Character::~Character()' battle.cpp:(.text+0x1107): undefined reference to `Character::~Character()' battle.cpp:(.text+0x114c): undefined reference to `Character::~Character()' character.o: In function `Character::Character(char*, long, long)': character.cpp:(.text+0xdb): undefined reference to `vtable for Character' character.o: In function `Character::Character(char*, long, long)': character.cpp:(.text+0x12d): undefined reference to `vtable for Character' collect2: ld returned 1 exit status rm: cannot remove `*~': No such file or directory make: *** [all] Error 1 Once again, here is my current Makefile: CC=g++ CFLAGS=-W -Wall -pedantic LIBS=`sdl-config --cflags --libs` -lSDL_image -lSDL_gfx -lSDL_ttf character.o: character.cpp reset; $(CC) $(CFLAGS) -c character.cpp;rm *~ battle.o: battle.cpp reset; $(CC) $(CFLAGS) -c battle.cpp -I/usr/include/SDL/; rm *~ all: battle.o character.o reset; $(CC) $(CFLAGS) battle.o character.o $(LIBS) -o battle; rm *~ Is it normal for only portions of make all to run at a time?