delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2003/08/10/23:04:46

Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sources.redhat.com/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sources.redhat.com/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com
X-Injected-Via-Gmane: http://gmane.org/
To: cygwin AT cygwin DOT com
From: Nicholas Wourms <nwourms AT myrealbox DOT com>
Subject: Re: Building the GNU cgicc library...
Date: Sun, 10 Aug 2003 23:04:01 -0400
Lines: 135
Message-ID: <3F3707A1.9060609@myrealbox.com>
References: <407DF7D68DD30440B5CEB70ED234D1CF038B01CC AT excuswa100 DOT americas DOT unity>
Mime-Version: 1.0
X-Complaints-To: usenet AT sea DOT gmane DOT org
User-Agent: Mozilla/5.0 (Windows; U; Win 9x 4.90; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 (ax)
X-Accept-Language: en-us, en
In-Reply-To: <407DF7D68DD30440B5CEB70ED234D1CF038B01CC@excuswa100.americas.unity>
X-Enigmail-Version: 0.76.5.0
X-Enigmail-Supports: pgp-inline, pgp-mime

It is a common courtesy to keep public discussions on the list, that way 
if someone else encounters this same problem, they might know what to do.

Bakken, Luke wrote:
>>This may (or may not) be your problem, but your library is 
>>being built 
>>as a static archive eventhough you requested a shared 
>>library.
> 
> 
> I'm just curious how you noticed that in the output - is it the
> libcgicc.la that you noticed?
> 

Please see my message again, I put ^^^^^^^^ underneath the output 
message which tipped me off.

>>Edit the makefile in that library's source directory and look for the 
>>line which contains the "-version-info 5:0:0" string.  Append 
>>"-no-undefined" after that string to get something like 
>>"-version-info 
>>5:0:0 -no-undefined".  Then make clean and rebuild.
> 
> 
> Yeah, I tried this (read it in a mail list archive somewhere) by doing:
> 
> $ CXXFLAGS='-Wl,--no-undefined' ./configure
> 
> The ld --help command specifies '--no-undefined'.

Well, you see it is more complex than just passing a linker flag. 
-no-undefined is a libtool flag and it should only be passed at 
linktime.  So try LDFLAGS="-no-undefined" and see what happens, but why 
didn't you try exactly what I told you in the first place?

> ----------
> /bin/bash ../libtool --mode=link g++  -Wall -W -pedantic
> -Wl,--no-undefined   -o libcgicc.la -rpath /usr/lib -version-info 5:0:0
> CgiEnvironment.lo Cgi
> Input.lo CgiUtils.lo Cgicc.lo FormEntry.lo FormFile.lo HTMLAttribute.lo
> HTMLAttributeList.lo HTMLDoctype.lo HTMLElement.lo HTMLElementList.lo
> HTTPCont
> entHeader.lo HTTPCookie.lo HTTPHTMLHeader.lo HTTPHeader.lo
> HTTPPlainHeader.lo HTTPRedirectHeader.lo HTTPResponseHeader.lo
> HTTPStatusHeader.lo MStreama
> ble.lo
> libtool: link: warning: undefined symbols not allowed in i686-pc-cygwin
> shared libraries
> ar cru .libs/libcgicc.a  CgiEnvironment.o CgiInput.o CgiUtils.o Cgicc.o
> FormEntry.o FormFile.o HTMLAttribute.o HTMLAttributeList.o HTMLDoctype.o
> HTMLE
> lement.o HTMLElementList.o HTTPContentHeader.o HTTPCookie.o
> HTTPHTMLHeader.o HTTPHeader.o HTTPPlainHeader.o HTTPRedirectHeader.o
> HTTPResponseHeader.o
> HTTPStatusHeader.o MStreamable.o
> ranlib .libs/libcgicc.a
> creating libcgicc.la
> (cd .libs && rm -f libcgicc.la && ln -s ../libcgicc.la libcgicc.la)
> make[2]: Leaving directory `/home/lukeb/cgicc-3.2.2/cgicc'
> make[1]: Leaving directory `/home/lukeb/cgicc-3.2.2/cgicc'
> Making all in doc
> make[1]: Entering directory `/home/lukeb/cgicc-3.2.2/doc'
> make[1]: Nothing to be done for `all'.
> make[1]: Leaving directory `/home/lukeb/cgicc-3.2.2/doc'
> Making all in support
> make[1]: Entering directory `/home/lukeb/cgicc-3.2.2/support'
> make[1]: Nothing to be done for `all'.
> make[1]: Leaving directory `/home/lukeb/cgicc-3.2.2/support'
> Making all in demo
> make[1]: Entering directory `/home/lukeb/cgicc-3.2.2/demo'
> if g++ -DHAVE_CONFIG_H -I. -I. -I../cgicc -I.. -I..    -Wall -W
> -pedantic -Wl,--no-undefined -MT test.o -MD -MP -MF ".deps/test.Tpo" \
>   -c -o test.o `test -f 'test.cpp' || echo './'`test.cpp; \
> then mv -f ".deps/test.Tpo" ".deps/test.Po"; \
> else rm -f ".deps/test.Tpo"; exit 1; \
> fi
> g++: --no-undefined: linker input file unused because linking not done
> /bin/bash ../libtool --mode=link g++  -Wall -W -pedantic
> -Wl,--no-undefined   -o test.cgi.exe  test.o ../cgicc/libcgicc.la
> mkdir .libs
> g++ -Wall -W -pedantic -Wl,--no-undefined -o test.cgi.exe test.o
> ../cgicc/.libs/libcgicc.a
> test.o(.ctors+0x0):test.cpp: undefined reference to `__GLOBAL__I_main'
> test.o(.dtors+0x0):test.cpp: undefined reference to `__GLOBAL__D_main'
> ../cgicc/.libs/libcgicc.a(HTMLElement.o)(.ctors+0x0):HTMLElement.cpp:
> undefined reference to `__GLOBAL__I__ZN5cgicc11HTMLElementC2ERKS0_'
> ../cgicc/.libs/libcgicc.a(HTMLElement.o)(.dtors+0x0):HTMLElement.cpp:
> undefined reference to `__GLOBAL__D__ZN5cgicc11HTMLElementC2ERKS0_'
> ../cgicc/.libs/libcgicc.a(HTTPHTMLHeader.o)(.ctors+0x0):HTTPHTMLHeader.c
> pp: undefined reference to `__GLOBAL__I__ZN5cgicc14HTTPHTMLHeaderC2Ev'
> ../cgicc/.libs/libcgicc.a(HTTPHTMLHeader.o)(.dtors+0x0):HTTPHTMLHeader.c
> pp: undefined reference to `__GLOBAL__D__ZN5cgicc14HTTPHTMLHeaderC2Ev'
> ../cgicc/.libs/libcgicc.a(HTTPContentHeader.o)(.ctors+0x0):HTTPContentHe
> ader.cpp: undefined reference to
> `__GLOBAL__I__ZN5cgicc17HTTPContentHeaderC2ER
> KSs'
> ../cgicc/.libs/libcgicc.a(HTTPContentHeader.o)(.dtors+0x0):HTTPContentHe
> ader.cpp: undefined reference to
> `__GLOBAL__D__ZN5cgicc17HTTPContentHeaderC2ER
> KSs'
> collect2: ld returned 1 exit status
> make[1]: *** [test.cgi.exe] Error 1
> make[1]: Leaving directory `/home/lukeb/cgicc-3.2.2/demo'
> make: *** [all-recursive] Error 1
> /home/lukeb/cgicc-3.2.2
> ----------
>  
> 
>>If it still complains about undefined 
>>symbols, you will need to figure out what external libraries it is 
>>trying to use and add them to the following line:
> 
> 
> I grepped the source files for the text matching the
> functions/methods/etc that were in the ld error messages, and they are
> all within this library. I don't think it's trying to reference anything
> else.

Well you need to try the approach I first mentioned.  This is not 
relevant if you haven't passed the correct linker flags to libtool. 
Please reread my previous message and try that apprach.

> 
> Thanks for the informative email! I just might look into your libtool
> suggestion, even though the one shipped with the source is the latest
> stable version.

That isn't really saying much, because most people still think 1.4.3 is 
the most current, when in fact 1.5.0 is the latest "stable" release.  Do 
not be deceived by the labeling in the cygwin package, the truth of the 
matter is that 1.4.x is no longer being maintained.

Cheers,
Nicholas



--
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/

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019