2011/1/17 David Lichteblau <david@lichteblau.com>
Hi,

Quoting Amyn Bennamane (amynbe@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