X-Authentication-Warning: delorie.com: mailnull set sender to djgpp-bounces using -f From: "deckerben" Newsgroups: comp.os.msdos.djgpp References: <3ca78d87$0$364$9b622d9e AT news DOT freenet DOT de> <3cab2f26$0$152$9b622d9e AT news DOT freenet DOT de> <3cace922$0$12701$9b622d9e AT news DOT freenet DOT de> <3CAD6C24 DOT 495D4F57 AT phekda DOT freeserve DOT co DOT uk> Subject: Re: making dxe2gen with clio.rice.edu binaries -or- "undefined reference to 'operator'"? Date: Tue, 9 Apr 2002 14:20:32 +0200 X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 6.00.2600.0000 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2600.0000 Lines: 52 Message-ID: <3cb2d8a3$0$28200$9b622d9e@news.freenet.de> NNTP-Posting-Host: 213.6.63.58 X-Trace: 1018353828 news.freenet.de 28200 213.6.63.58 X-Complaints-To: abuse AT freenet DOT de To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com > Note that if you compile and link a C++ program in one line, then gcc knows it > should link in the standard C++ library, because it knows its C++ from the > file extension: > > gcc -g -Wall -o foo foo.cpp But I tried that before I submitted the question and it wasn't working. Say I compile manually (not hard with little dxe2gen..) D:\Project\dxe2\src>gcc -O2 -c -g -Wall *.c -I../include D:\Project\dxe2\src>gcc -O2 -g -Wall dxe2api.o dxe2stat.o -I../include dxe2gen.cpp -o dxe2gen.exe d:/user/djgpp/tmp\ccpkhKFC.o: In function `write_dxe(FILE*, FILE*, external_file hdr&)': dxe2gen.cpp:237: undefined reference to `operator new[](unsigned long)' dxe2gen.cpp:242: undefined reference to `operator new[](unsigned long)' dxe2gen.cpp:249: undefined reference to `operator new[](unsigned long)' dxe2gen.cpp:254: undefined reference to `operator new[](unsigned long)' dxe2gen.cpp:481: undefined reference to `operator delete[](void*)' dxe2gen.cpp:485: undefined reference to `operator delete[](void*)' dxe2gen.cpp:486: undefined reference to `operator delete[](void*)' dxe2gen.cpp:487: undefined reference to `operator delete[](void*)' d:/user/djgpp/tmp\ccpkhKFC.o: In function `make_implib()': dxe2gen.cpp:521: undefined reference to `operator new[](unsigned long)' dxe2gen.cpp:616: undefined reference to `operator delete[](void*)' dxe2gen.cpp:539: undefined reference to `operator delete[](void*)' d:/user/djgpp/tmp\ccpkhKFC.o: In function `show_symbols(char const*)': dxe2gen.cpp:647: undefined reference to `operator new[](unsigned long)' d:/user/djgpp/tmp\ccpkhKFC.o(.eh_frame+0x11):dxe2gen.cpp: undefined reference to `__gxx_personality_v0' collect2: ld returned 1 exit status Note: it appears that gcc DID NOT 'link with the standard C++ library', although the cpp file extension appeared in the second command line. now I try it again with manual link option with library: gcc -O2 -g -Wall dxe2api.o dxe2stat.o -I../include dxe2gen.cpp -o dxe2gen.exe -lstdcxx ...and it works fine. it seems that GCC is not automaticly pulling up the standard C++ lib here, even when a .cpp file is being specified. ??? Ben