Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com To: cygwin AT cygwin DOT com From: "Judd" Subject: Re: Build/Linker question again (g++) Date: Mon, 25 Oct 2004 07:33:48 -0600 Lines: 80 Message-ID: References: <417ADE6A DOT 7090804 AT familiehaase DOT de> X-Complaints-To: usenet AT sea DOT gmane DOT org X-Gmane-NNTP-Posting-Host: 66.54.224.97 X-Newsreader: Microsoft Outlook Express 6.00.2800.1437 X-IsSubscribed: yes "Gerrit P. Haase" wrote in message news:417ADE6A DOT 7090804 AT familiehaase DOT de... > Judd wrote: > > > The error I'm getting now is: > > ---------------------------- > > /usr/lib/gcc-lib/i686-pc-cygwin/3.3.3/libgcc.a(_chkstk.o)(.text+0x0): > > multiple definition of `__alloca' > > > > /usr/lib/libcygwin.a(d000085.o)(.text+0x0): first defined here > > > > /usr/lib/gcc-lib/i686-pc-cygwin/3.3.3/libgcc.a(_eprintf.o)(.text+0x0): > > multiple definition of `___eprintf' > > > > /usr/lib/libcygwin.a(d000027.o)(.text+0x0): first defined here > > > > --------------------------------- > > > > From the build command: > > > > ------------------------- > > > > g++ -shared \ > > -nodefaultlibs \ > > -o libInventor.dll \ > > -Wl,--out-implib=libInventor.dll.a \ > > -Wl,--export-all-symbols \ > > -Wl,--enable-auto-import \ > > -Wl,--whole-archive \ > > libInventor.a \ > > -WL,--no-whole-archive \ > > -L/usr/lib \ > > -L/usr/lib/gcc-lib/i686-pc-cygwin/3.3.3 \ > > -L/usr/X11R6/lib \ > > -L/usr/lib/w32api \ > > -L../libimage \ > > -L../libFL/src \ > > -ljpeg.dll -limage -lFL -lX11.dll -lfltk_gl.dll -lGLU.dll \ > > -lGL.dll -liconv.dll -lfreetype.dll -lcygwin -lstdc++ \ > > -lasprintf -lz -lkernel32 -lgcc > > You don't need to add the .dll prefix, the linker should automatically > pick up the .dll.a import lib if both, import lib and static archives > are present. > Not the problem, but thanks. > > > ----------------------------- > > > > I'm using nodefaultlibs because I had a problem linking before where I was > > getting lots of multiple definition errors from essentially the same > > library. Using nodefaultlibs and linking all the libs I need by hand has > > fixed all those, but I have those last 2 multiple definition errors. Is > > there any way to link libcygwin and libgcc without getting multiple > > definitions of ___eprintf and __alloca? It seems bizarre that those 2 would > > conflict. Maybe there's a command line option that I need to be using in my > > build command. > > There is no option like nodefaultlibs: > > $ ld --help | grep nodefaultlibs > > Try -nostdlib instead. Actually, the option does exist with 3.3.3 and it does work. It forces the linker not to use default libraries. I could take the argument out and get a completely different build. I'm more interested in somone knowing about the errors I suppose and how to get around a multiple definition error of eprintf and alloca between libgcc and libcygwin. -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/