Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 12 Nov 2002 20:07:23 -0800
From:      Jordan K Hubbard <jkh@queasyweasel.com>
To:        The Anarcat <anarcat@anarcat.ath.cx>
Cc:        libh@FreeBSD.ORG, Alexander Langer <alex@big.endian.de>
Subject:   Re: serious libh linking problems
Message-ID:  <69CC05B0-F6BD-11D6-9957-000393BB9222@queasyweasel.com>
In-Reply-To: <20021113040224.GB9054@lenny.anarcat.ath.cx>

next in thread | previous in thread | raw e-mail | index | archive | help
Link order?  What happens when you stick -lhsysinstall *earlier* in the 
link line, say before -lhtcl?

On Tuesday, November 12, 2002, at 08:02 PM, The Anarcat wrote:

> Hi all
>
> I write this to you in an attempt to solve a recurring problem I'm
> having with libh that is *really* hindering development, for me.  I'm
> currently trying to rewrite our pkg_create sh script in C++ (from a sh
> script). I just checked-in the source in libh/bin/pkg_create. You
> haven't seen the mail because of DNS problems on rtp1.
>
> Anyways, I'm having problem linking the final program. I've seen
> similar problems when trying to switch to rhtvision and link other
> programs against libh.
>
> The source file is being properly compiled, g++ can find its headers,
> etc, and I can generate the .o file. However, when trying to link, I
> get:
>
> g++31  -O -pipe  -I../../include -I/usr/local/include/tcl8.3    -c 
> pkg_create.cc
> g++31  -O -pipe  -I../../include -I/usr/local/include/tcl8.3     
> -L/usr/local/lib -L/usr/lib -o pkg_create pkg_create.o -ltcl83 -lh 
> -lhtcl -lhdatabase -lhfile -lhsysinstall
> /usr/lib/libhsysinstall.so: undefined reference to 
> `LanguageInterface::LanguageInterface(bool)'
> /usr/lib/libhsysinstall.so: undefined reference to 
> `LanguageInterface::Object type_info node'
> /usr/lib/libhsysinstall.so: undefined reference to 
> `LanguageInterface::languageUnref(LanguageInterface::Object const &) 
> const'
> /usr/lib/libhsysinstall.so: undefined reference to `LanguageInterface 
> type_info function'
> /usr/lib/libhsysinstall.so: undefined reference to 
> `LanguageInterface::referenced(LanguageInterface::Object const *) 
> const'
> /usr/lib/libhsysinstall.so: undefined reference to 
> `LanguageInterface::languageRef(LanguageInterface::Object const &) 
> const'
> /usr/lib/libhsysinstall.so: undefined reference to 
> `LanguageInterface::referenced(LanguageInterface::Object const &) 
> const'
> /usr/lib/libhsysinstall.so: undefined reference to 
> `LanguageInterface::Object type_info function'
> /usr/lib/libhsysinstall.so: undefined reference to 
> `LanguageInterface::gc(void) const'
> /usr/lib/libhsysinstall.so: undefined reference to 
> `LanguageInterface::referencedObjects(void)'
> /usr/lib/libhsysinstall.so: undefined reference to 
> `LanguageInterface::referenceObject(LanguageInterface::Object const *) 
> const'
> /usr/lib/libhsysinstall.so: undefined reference to 
> `Shared::onHeap(void const *)'
> /usr/lib/libhsysinstall.so: undefined reference to 
> `LanguageInterface::dereferenceObject(LanguageInterface::Object const 
> *) const'
> /usr/lib/libhsysinstall.so: undefined reference to 
> `LanguageInterface::object2string(LanguageInterface::Object const *)'
> /usr/lib/libhsysinstall.so: undefined reference to 
> `Shared::isOnHeap(Shared const *)'
> /usr/lib/libhsysinstall.so: undefined reference to 
> `LanguageInterface::~LanguageInterface(void)'
> /usr/lib/libhsysinstall.so: undefined reference to 
> `LanguageInterface::languageRef(LanguageInterface::Object const *) 
> const'
> /usr/lib/libhsysinstall.so: undefined reference to 
> `LanguageInterface::languageUnref(LanguageInterface::Object const *) 
> const'
> /usr/lib/libhsysinstall.so: undefined reference to `LanguageInterface 
> type_info node'
> collect2: ld returned 1 exit status
> *** Error code 1
>
> Stop in /usr/home/anarcat/cvs-work/libh/bin/pkg_create.
>
> I have just installed that library (libhsysinstall). What I don't
> understand is that I can't find that damn symbol anywhere:
>
> anarcat@lenny[~/libh/compile/none]% for f in libh*
> do; nm -C $f 2>/dev/null | grep LanguageInterface::Language  && echo 
> "$f"
> done
>          U LanguageInterface::LanguageInterface(bool)
> libhsysinstall.a
>          U LanguageInterface::LanguageInterface(bool)
> libhsysinstall.so
>          U LanguageInterface::LanguageInterface(bool)
> libhsysinstall.so.0
> 00000000 W LanguageInterface::LanguageInterface(bool)
> libhtcl.a
> 000519da W LanguageInterface::LanguageInterface(bool)
> libhtcl.so
> 000519da W LanguageInterface::LanguageInterface(bool)
> libhtcl.so.0
> 00000000 W LanguageInterface::LanguageInterface(bool)
> libhtcldisk.a
> 00043798 W LanguageInterface::LanguageInterface(bool)
> libhtcldisk.so
> 00043798 W LanguageInterface::LanguageInterface(bool)
> libhtcldisk.so.0
> 00000000 W LanguageInterface::LanguageInterface(bool)
> libhtclfile.a
> 00049a12 W LanguageInterface::LanguageInterface(bool)
> libhtclfile.so
> 00049a12 W LanguageInterface::LanguageInterface(bool)
> libhtclfile.so.0
> 00000000 W LanguageInterface::LanguageInterface(bool)
> libhtclhui.a
> 0007969e W LanguageInterface::LanguageInterface(bool)
> libhtclhui.so
> 0007969e W LanguageInterface::LanguageInterface(bool)
> libhtclhui.so.0
> 00000000 W LanguageInterface::LanguageInterface(bool)
> libhtclsysinstall.a
> 000a4e32 W LanguageInterface::LanguageInterface(bool)
> libhtclsysinstall.so
> 000a4e32 W LanguageInterface::LanguageInterface(bool)
> libhtclsysinstall.so.0
>
> Some symbols are defined, however. For example, Shared::onHeap() is
> defined in libh.so:
>
> 0003a746 T Shared::onHeap(void const*)
> libh.so
>
> The thing itself is kinda very important to libh. It is defined in
> libh/include/LanguageInterface.hh:
>
> class LanguageInterface
> {
>      friend class H;
>      friend class HObjectsReferences;
>
>   public:
>      LanguageInterface( bool enableGC ) : mGC( enableGC ) {}
> ...
> }
>
> Why it's not linking anywhere is beyond me.
>
> Also, why tclh is linking at all is also a great mystery for me.
>
> Please, any hint will help greatly. I'm completly confused and pretty
> desperate to solve this problem.
>
> If I can't get this program to link I don't see very well where we
> should be going next. Is it really impossible/forbidden to link
> against LibH?
>
> A.
>
> -- 
> Advertisers, not governments, are the primary censors of media content
> in the United States today.
>                         - C. Edwin Baker
>                         http://www.ad-mad.co.uk/quotes/freespeech.htm
> <mime-attachment>
--
Jordan K. Hubbard
Engineering Manager, BSD technology group
Apple Computer


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-libh" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?69CC05B0-F6BD-11D6-9957-000393BB9222>