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>
