[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-devel
Subject: Re: Error building kdebase libphonon.so: undefined reference to
From: Eduardo Robles Elvira <edulix () gmail ! com>
Date: 2009-12-18 9:36:25
Message-ID: 9e2d3ad60912180136q43c8b32eg5fae9f527006d84c () mail ! gmail ! com
[Download RAW message or body]
Hello again,
I'm having similar problems again, this time when building kdevplatform. I get:
Built target kdev_starter_automoc
Building CXX object
kdevplatform/util/kdev_starter/CMakeFiles/kdev_starter.dir/main.o
Linking CXX executable kdev_starter
CMakeFiles/kdev_starter.dir/main.o: In function
`QList<QString>::detach_helper()':
/home/edulix/proyectos/kde4/qt4/include/QtCore/qlist.h:604: undefined
reference to `QListData::detach3()'
collect2: ld returned 1 exit status
make[2]: *** [kdevplatform/util/kdev_starter/kdev_starter] Error 1
make[1]: *** [kdevplatform/util/kdev_starter/CMakeFiles/kdev_starter.dir/all]
Error 2
I recently removed all my installation and did a --refresh-build as I
already commented here. So this is what I've seen:
1. First, looking at the code in
/home/edulix/proyectos/kde4/qt4/include/QtCore/qlist.h at line 604,
there is:
template <typename T>
Q_OUTOFLINE_TEMPLATE void QList<T>::detach_helper()
{
Node *n = reinterpret_cast<Node *>(p.begin());
QListData::Data *x = p.detach3(); // <<<<<<<<<< LINE 604 HERE
QT_TRY {
node_copy(reinterpret_cast<Node *>(p.begin()),
reinterpret_cast<Node *>(p.end()), n);
} QT_CATCH(...) {
qFree(d);
d = x;
QT_RETHROW;
}
if (!x->ref.deref())
free(x);
}
2. Changing detach3() with detach2() (which is being deprecated for QT
5 but that's nothing to worry for now :P) magically works and
generates correctly the kdeveplatform binary kdev_helper, which seems
in turn to be linking to the correct libQtCore:
edulix@edulix-laptop:~/proyectos/kde4/src/build/extragear/sdk/kdevplatform/util/kdev_starter$
make
Built target kdev_starter_automoc
Scanning dependencies of target kdev_starter
Building CXX object
kdevplatform/util/kdev_starter/CMakeFiles/kdev_starter.dir/main.o
Linking CXX executable kdev_starter
Built target kdev_starter
edulix@edulix-laptop:~/proyectos/kde4/src/build/extragear/sdk/kdevplatform/util/kdev_starter$
cb
edulix@edulix-laptop:~/proyectos/kde4/src/build/extragear/sdk/kdevplatform/util/kdev_starter$
ldd kdev_starter
linux-vdso.so.1 => (0x00007fff591ff000)
libQtCore.so.4 =>
/home/edulix/proyectos/kde4/qt4/lib/libQtCore.so.4
(0x00007f2c56c53000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007f2c56943000)
libm.so.6 => /lib/libm.so.6 (0x00007f2c566bf000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00007f2c564a8000)
libc.so.6 => /lib/libc.so.6 (0x00007f2c56139000)
libpthread.so.0 => /lib/libpthread.so.0 (0x00007f2c55f1d000)
libz.so.1 => /lib/libz.so.1 (0x00007f2c55d06000)
libdl.so.2 => /lib/libdl.so.2 (0x00007f2c55b02000)
libgthread-2.0.so.0 => /usr/lib/libgthread-2.0.so.0 (0x00007f2c558fd000)
librt.so.1 => /lib/librt.so.1 (0x00007f2c556f5000)
libglib-2.0.so.0 => /lib/libglib-2.0.so.0 (0x00007f2c5542e000)
/lib64/ld-linux-x86-64.so.2 (0x00007f2c570ac000)
libpcre.so.3 => /lib/libpcre.so.3 (0x00007f2c55200000)
3. So I started inspecting the code in qlist.cpp, and I found that in
the code, detach3 is as defined as detach2:
edulix@edulix-laptop:~/proyectos/kde4/src/qt-copy/src/corelib/tools$
grep -C 2 "*QListData::detach" qlist.cpp
# error "Remove QListData::detach(), it is only required for binary
compatibility for 4.0.x to 4.2.x"
#endif
QListData::Data *QListData::detach()
{
Data *x = static_cast<Data *>(qMalloc(DataHeaderSize + d->alloc *
sizeof(void *)));
--
# error "Remove QListData::detach2(), it is only required for binary
compatibility for 4.3.x to 4.5.x"
#endif
QListData::Data *QListData::detach2()
{
Data *x = d;
--
* \internal
*/
QListData::Data *QListData::detach3()
{
Data *x = d;
4. And indeed, inspecting the library that was shown to be linked by
kdev_starter (/home/edulix/proyectos/kde4/qt4/lib/libQtCore.so.4), the
symbol was there, at least in the debug version which I asume that has
the same symbols as the other versions as they were built at the same
time:
edulix@edulix-laptop:~/proyectos/kde4/src/qt-copy/src/corelib/tools$ l
/home/edulix/proyectos/kde4/qt4/lib/libQtCore.so.4*
lrwxrwxrwx 1 edulix edulix 18 2009-12-17 23:20
/home/edulix/proyectos/kde4/qt4/lib/libQtCore.so.4 ->
libQtCore.so.4.6.1
lrwxrwxrwx 1 edulix edulix 18 2009-12-17 23:20
/home/edulix/proyectos/kde4/qt4/lib/libQtCore.so.4.6 ->
libQtCore.so.4.6.1
-rwxr-xr-x 1 edulix edulix 2,4M 2009-12-17 23:20
/home/edulix/proyectos/kde4/qt4/lib/libQtCore.so.4.6.1
-rw-r--r-- 1 edulix edulix 23M 2009-12-17 21:09
/home/edulix/proyectos/kde4/qt4/lib/libQtCore.so.4.6.1.debug
edulix@edulix-laptop:~/proyectos/kde4/src/qt-copy/src/corelib/tools$
nm /home/edulix/proyectos/kde4/qt4/lib/libQtCore.so.4.6.1 | grep
detach | grep QListData
nm: /home/edulix/proyectos/kde4/qt4/lib/libQtCore.so.4.6.1: no symbols
edulix@edulix-laptop:~/proyectos/kde4/src/qt-copy/src/corelib/tools$
nm /home/edulix/proyectos/kde4/qt4/lib/libQtCore.so.4.6.1.debug |
grep detach | grep QListData
00000000000a0420 T _ZN9QListData6detachEv
00000000000a0390 T _ZN9QListData7detach2Ev
00000000000a0320 T _ZN9QListData7detach3Ev
So.. what's happening? Well something is wrong :P
Regards,
Eduardo Robles Elvira.
>> Visit http://mail.kde.org/mailman/listinfo/kde-devel#unsub to unsubscribe <<
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic