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:
- git clone git://anongit.kde.org/smokegen
cd smokegen cmake CMakeLists.txt -DCMAKE_INSTALL_PREFIX=/opt/smoke make install cd ..
export LD_LIBRARY_PATH=/opt/smoke/lib:$LD_LIBRARY_PATH
git clone git://anongit.kde.org/smokeqt
cd smokeqt cmake CMakeLists.txt -DCMAKE_INSTALL_PREFIX=/opt/smoke make install
- 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.