[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