[commonqt-devel] Undefined symbol in libcommonqt

Amyn Bennamane amynbe at gmail.com
Tue Jan 18 03:10:54 UTC 2011


2011/1/17 David Lichteblau <david at lichteblau.com>

> Hi,
>
> Quoting Amyn Bennamane (amynbe at gmail.com):
> > Sorry, I am new to mailing lists and forgot to cc the list.
> >
> > Thank you for the fast answer.
> >
> > > What version of kdebindings/smoke are you using?
> >
> > 4.5.5-1
>
> if that means kdebindings from KDE 4.5, it should work.  (At least in
> the sense that it is also the version Debian ships, which mostly works
> for others.)
>
> > >  Does "ldd
> > > libcommonqt.so" show that it links to the right libsmoke*.so files?
> >
> >  ldd libcommonqt.so | grep smoke
> > shows nothing
>
> I can't make sense of that.  Either way, ldd would indicate whether the
> linker could find the smoke libraries or not.
>
> Did compilation actually work?
>
> Are there any compilation warnings if you run:
> cd commonqt && make clean && qmake && make
>
> >  Are
> > > library paths set up so that the linker would also find them at
> runtime?
> > >
> > >
> > I'm not skilled in library stuff so I 'm not sure I will answer as you
> > expect:
> > I have 123 libsmoke*.so files in /usr/lib, that is the folder used in the
> > CommonQt Makefile (in the -L linker option), so I assume the path is
> > correct?
>
> Lacking other options, I'd personally try to uninstall the
> system-provided smoke and compile it manually, just to see whether it
> makes a difference:
>
> 1. git clone git://anongit.kde.org/smokegen
>   cd smokegen
>   cmake CMakeLists.txt -DCMAKE_INSTALL_PREFIX=/opt/smoke
>   make install
>   cd ..
>
> 2. export LD_LIBRARY_PATH=/opt/smoke/lib:$LD_LIBRARY_PATH
>
> 3. git clone git://anongit.kde.org/smokeqt
>   cd smokeqt
>   cmake CMakeLists.txt -DCMAKE_INSTALL_PREFIX=/opt/smoke
>   make install
>
> 4. cd /path/to/commonqt
>   make clean
>   qmake LIBS=-L/opt/smoke/lib/ INCLUDEPATH=/opt/smoke/include/
>   make
>
> Keep in mind that LD_LIBRARY_PATH still needs to be set when invoking
> the Lisp later.
>
> ldd output for me is then:
>
> ------------------------------------------------------------------------
> $ ldd libcommonqt.so | grep smoke
>        libsmokeqtcore.so.3 => /opt/smoke/lib/libsmokeqtcore.so.3
> (0x00007f7e8d1d9000)
>        libsmokebase.so.3 => /opt/smoke/lib/libsmokebase.so.3
> (0x00007f7e8b123000)
> ------------------------------------------------------------------------
>
>
> David
>

Hello,
Thanks to your precious help, I solved my problem. It seems the problem was
coming from CommonQt side:

First, not important but I needed to mv libcppparser.so to /usr/lib/ to
build smokeqt (the 2nd step you mentioned).

Second, still nothing related to smoke in libcommonqt.so. but
ldd -r libcommonqt.so outputs
[...]
undefined symbol: _ZN5Smoke8classMapE   (./libcommonqt.so)
undefined symbol: _ZN5Smoke15NullModuleIndexE   (./libcommonqt.so)

so I see that ldd can tell me which symbols are undefined (yeah newbie here)

Third, checking the Makefile, your ldd output gave me the idea of adding as
linker option -lsmokebase along with the already existing -lsmokeqtcore. (So
next time added it in commonqt.pro and same effect)

Then it worked, no more undefined symbol in libcommonqt.so and the tutorial
runs :D , but note this:

--------------------------------------------------------------------------------------------------------------
$ ldd libcommonqt.so | grep smoke
        libsmokebase.so.3 => /opt/smoke/lib/libsmokebase.so.3 (0xb78a1000)
--------------------------------------------------------------------------------------------------------------

i.e only smokebase appears.

That's all. I wonder why I need to explicitly add smokebase as a shared lib,
you may have an idea?

Thanks again.


-- 
Amyn
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/commonqt-devel/attachments/20110118/e9a88076/attachment.html>


More information about the commonqt-devel mailing list