Error in compiling from svn

classic Classic list List threaded Threaded
12 messages Options
Reply | Threaded
Open this post in threaded view
|

Error in compiling from svn

Bugzilla from pave@o2.pl
Hi!

I'm trying to compile the unstable version of digiKam from svn and install
it in my homedir, following the instructions at
http://www.digikam.org/?q=download/svn. The installation of exiv2 and
extragear libs went fine, but compiling digiKam gives an error:

/bin/sh ../../libtool --silent --tag=CXX   --mode=link
g++ -Wno-long-long -Wundef -ansi -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align -Wchar-subscripts -Wall -W -Wpointer-arith -O2 -Wformat-security -Wmissing-format-attribute -Wno-non-virtual-dtor -fno-exceptions -fno-check-new -fno-common -DQT_CLEAN_NAMESPACE -DQT_NO_ASCII_CAST -DQT_NO_STL -DQT_NO_COMPAT -DQT_NO_TRANSLATION -DQT_CLEAN_NAMESPACE  -R /home/pave/digikam_svn/installed/lib -R /opt/kde/lib -R /opt/qt/lib -R /home/pave/digikam_svn/installed/lib -L/opt/kde/lib -L/opt/qt/lib -L/home/pave/digikam_svn/installed/lib -lkutils -o
digikam
main.o -lqt-mt -lz -lpng -lz -lm -lXext -lX11 -lSM -lICE -lpthread -lkdecore -lkdeui  -lkio -lkparts -lkutils
libdigikam.la
./.libs/libdigikam.so: undefined reference to
`KExiv2Iface::KExiv2::getExifTagsDataList(QStringList const&, bool)'
./.libs/libdigikam.so: undefined reference to
`KExiv2Iface::KExiv2::getIptcTagsDataList(QStringList const&, bool)'
collect2: ld returned 1 exit status
make: *** [digikam] Error 1


To configure digiKam I used:
./configure -prefix=/home/pave/digikam_svn/installed --with-extra-includes=/home/pave/digikam_svn/installed/include --with-extra-libs=/home/pave/digikam_svn/installed/lib

My environment variables are set as follows:
bash-3.2$ echo $KDEDIRS
/home/pave/digikam_svn/installed:/opt/kde:/usr (restarted kde after changing
it)
bash-3.2$ echo $LDPATH
/home/pave/digikam_svn/installed/lib:
bash-3.2$ echo $LD_LIBRARY_PATH
/home/pave/digikam_svn/installed/lib:
bash-3.2$ echo $PKG_CONFIG_PATH
/home/pave/digikam_svn/installed/lib/pkgconfig

Any idea of what I'm doing wrong?

Thanks,
Paweł

_______________________________________________
Digikam-users mailing list
[hidden email]
https://mail.kde.org/mailman/listinfo/digikam-users
Reply | Threaded
Open this post in threaded view
|

Re: Error in compiling from svn

Gilles Caulier-4
Pawel,

Update libkexiv2 to the last stable and all will be fine.

Gilles Caulier

2007/6/21, Paweł Marciniak <[hidden email]>:
Hi!

I'm trying to compile the unstable version of digiKam from svn and install
it in my homedir, following the instructions at
http://www.digikam.org/?q=download/svn . The installation of exiv2 and
extragear libs went fine, but compiling digiKam gives an error:

/bin/sh ../../libtool --silent --tag=CXX   --mode=link
g++ -Wno-long-long -Wundef -ansi -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align -Wchar-subscripts -Wall -W -Wpointer-arith -O2 -Wformat-security -Wmissing-format-attribute -Wno-non-virtual-dtor -fno-exceptions -fno-check-new -fno-common -DQT_CLEAN_NAMESPACE -DQT_NO_ASCII_CAST -DQT_NO_STL -DQT_NO_COMPAT -DQT_NO_TRANSLATION -DQT_CLEAN_NAMESPACE  -R /home/pave/digikam_svn/installed/lib -R /opt/kde/lib -R /opt/qt/lib -R /home/pave/digikam_svn/installed/lib -L/opt/kde/lib -L/opt/qt/lib -L/home/pave/digikam_svn/installed/lib -lkutils -o
digikam
main.o -lqt-mt -lz -lpng -lz -lm -lXext -lX11 -lSM -lICE -lpthread -lkdecore -lkdeui  -lkio -lkparts -lkutils
libdigikam.la
./.libs/libdigikam.so: undefined reference to
`KExiv2Iface::KExiv2::getExifTagsDataList(QStringList const&, bool)'
./.libs/libdigikam.so: undefined reference to
`KExiv2Iface::KExiv2::getIptcTagsDataList(QStringList const&, bool)'
collect2: ld returned 1 exit status
make: *** [digikam] Error 1


To configure digiKam I used:
./configure -prefix=/home/pave/digikam_svn/installed --with-extra-includes=/home/pave/digikam_svn/installed/include --with-extra-libs=/home/pave/digikam_svn/installed/lib

My environment variables are set as follows:
bash-3.2$ echo $KDEDIRS
/home/pave/digikam_svn/installed:/opt/kde:/usr (restarted kde after changing
it)
bash-3.2$ echo $LDPATH
/home/pave/digikam_svn/installed/lib:
bash-3.2$ echo $LD_LIBRARY_PATH
/home/pave/digikam_svn/installed/lib:
bash-3.2$ echo $PKG_CONFIG_PATH
/home/pave/digikam_svn/installed/lib/pkgconfig

Any idea of what I'm doing wrong?

Thanks,
Paweł

_______________________________________________
Digikam-users mailing list
[hidden email]
https://mail.kde.org/mailman/listinfo/digikam-users


_______________________________________________
Digikam-users mailing list
[hidden email]
https://mail.kde.org/mailman/listinfo/digikam-users
Reply | Threaded
Open this post in threaded view
|

Re: Error in compiling from svn

Bugzilla from pave@o2.pl
Gilles Caulier wrote:

> Update libkexiv2 to the last stable and all will be fine.

System-wide I'm using libkexiv2 from the latest Arch extra repository
package, but I wouldn't like to mess with it and rather use the one I
compiled from svn and installed in my homedir. Perhaps the compilation
still uses the system-wide libraries instead of the ones from my homedir.
How can I prevent it?

For now I used:
--with-extra-includes=/home/pave/digikam_svn/installed/include
--with-extra-libs=/home/pave/digikam_svn/installed/lib
with digiKam's configure script, and
LD_LIBRARY_PATH=/home/pave/digikam_svn/installed/lib
LDPATH=/home/pave/digikam_svn/installed/lib
but it seems not enough.

Thanks in advance,
Paweł


_______________________________________________
Digikam-users mailing list
[hidden email]
https://mail.kde.org/mailman/listinfo/digikam-users
Reply | Threaded
Open this post in threaded view
|

Re: Error in compiling from svn

Arnd Baecker


On Fri, 22 Jun 2007, [UTF-8] Pawe�^B Marciniak wrote:

> Gilles Caulier wrote:
>
> > Update libkexiv2 to the last stable and all will be fine.
>
> System-wide I'm using libkexiv2 from the latest Arch extra repository
> package, but I wouldn't like to mess with it and rather use the one I
> compiled from svn and installed in my homedir. Perhaps the compilation
> still uses the system-wide libraries instead of the ones from my homedir.
> How can I prevent it?
>
> For now I used:
> --with-extra-includes=/home/pave/digikam_svn/installed/include
> --with-extra-libs=/home/pave/digikam_svn/installed/lib
> with digiKam's configure script, and
> LD_LIBRARY_PATH=/home/pave/digikam_svn/installed/lib
> LDPATH=/home/pave/digikam_svn/installed/lib
> but it seems not enough.
I am pretty certain that it is the following:
Due to a bug, in my opinion, the wrong kexiv2 is found.
This has been discussed quite a bit.
See for example,
  http://mail.kde.org/pipermail/digikam-users/2007-June/003687.html
for a hack

Gilles, can't something be done for this issue,
it comes up really frequently now?
(Jakub made some suggestions in the above thread,
if I remember correctly ...)

Best, Arnd


_______________________________________________
Digikam-users mailing list
[hidden email]
https://mail.kde.org/mailman/listinfo/digikam-users
Reply | Threaded
Open this post in threaded view
|

Re: Error in compiling from svn

Bugzilla from pave@o2.pl
Arnd Baecker wrote:

> Due to a bug, in my opinion, the wrong kexiv2 is found.
> This has been discussed quite a bit.
> See for example,
> http://mail.kde.org/pipermail/digikam-users/2007-June/003687.html
> for a hack

Thanks for your hint. I applied the script proposed in that thread (changing
the order in PKG_CONFIG_PATH), but it didn't solve my problem. I still get
the same error. Note that, in the thread you mentioned, the problem appears
at the stage of configuring digiKam. In my case ./configure is successful
and the problem shows up when linking.

Paweł

_______________________________________________
Digikam-users mailing list
[hidden email]
https://mail.kde.org/mailman/listinfo/digikam-users
Reply | Threaded
Open this post in threaded view
|

Re: Error in compiling from svn

Arnd Baecker
On Sun, 24 Jun 2007, [UTF-8] Pawe�^B Marciniak wrote:

[...]

> Thanks for your hint.

Well, wasn't any good, it seesm  ... ;-)

> I applied the script proposed in that thread (changing
> the order in PKG_CONFIG_PATH), but it didn't solve my problem. I still get
> the same error. Note that, in the thread you mentioned, the problem appears
> at the stage of configuring digiKam. In my case ./configure is successful
> and the problem shows up when linking.

Hmm, I am a bit surprised that configuration should work
when two different exiv2/kexiv2 are around ...

Just to be sure, at the line at which compilation fails,
is there any reference to the lib directory with the new compliled
libkexiv?

Best, Arnd


_______________________________________________
Digikam-users mailing list
[hidden email]
https://mail.kde.org/mailman/listinfo/digikam-users
Reply | Threaded
Open this post in threaded view
|

Re: Error in compiling from svn

Bugzilla from pave@o2.pl
Arnd Baecker wrote:

> Just to be sure, at the line at which compilation fails,
> is there any reference to the lib directory with the new compliled
> libkexiv?

Yes, there is -L with that directory, but _after_ -L with global kde lib
dir, I'm not sure if that matters. What seems strange to me is that there
is no explicit -l with kexiv2.

Btw. the compiler invocation and error message are pasted in my first post.

Regards,
Paweł

_______________________________________________
Digikam-users mailing list
[hidden email]
https://mail.kde.org/mailman/listinfo/digikam-users
Reply | Threaded
Open this post in threaded view
|

Re: Error in compiling from svn

Jakob "Østergaard"
In reply to this post by Bugzilla from pave@o2.pl
On Sunday 24 June 2007, Paweł Marciniak wrote:

> Arnd Baecker wrote:
> > Due to a bug, in my opinion, the wrong kexiv2 is found.
> > This has been discussed quite a bit.
> > See for example,
> > http://mail.kde.org/pipermail/digikam-users/2007-June/003687.html
> > for a hack
>
> Thanks for your hint. I applied the script proposed in that thread
> (changing the order in PKG_CONFIG_PATH), but it didn't solve my
> problem. I still get the same error. Note that, in the thread you
> mentioned, the problem appears at the stage of configuring digiKam.
> In my case ./configure is successful and the problem shows up when
> linking.

The configure script uses pkg_config to determine if your library is
good enough to link with.

The pkg_config program uses the PKG_CONFIG_PATH when it searches for
library versions -  which library it finds first depends on the
contents of PKG_CONFIG_PATH.

The linker, however, uses the linker path, not PKG_CONFIG_PATH, when
resolving which library to actually link with.

In my situation (the mail that was referred to above), pkg-config found
the wrong library and configure wouldn't run - but when forced,
everything would work because the linker used the right library (and
would have done so, no matter what PKG_CONFIG_PATH held).

In your sitaution, pkg-config finds the right library, configure thinks
everything will work, but the linker path is not correctly set up and
therefore the actual link fails. In this situation, configure is also
wrong (like in my situation), but you're seeing a false positive
whereas I was a false negative. The problem is the same though;
pkg_config and the linker not agreeing on the library search path.

In conclusion, repeating what I've said earlier; the concept of having a
PKG_CONFIG_PATH is fundamentally broken. It can never work. If
pkg_config is queried for library version numbers (as it is) then it
*must* use the linker path (like the linker does) to resolve libraries.

If PKG_CONFIG_PATH was set correctly (which it isn't) then it would be
identical to the linker path. There is *no* valid scenario (in which
pkg-config is used for library version resolution) that I can imagine,
where the PKG_CONFIG_PATH would differ from the linker path. None what
so ever. Any such scenario would mean, that one would want pkg_config
to deliberately lie about which library would be linked - which you
don't. If you don't care about the library versions, then it is easier
to just not ask pkg_config than (mis-)configuring it to lie about it.

I understand that pkg_config can do other things than library
resolution. In those situations I claim my argument still holds; when
resolving include files pkg_config should use whatever path the
compiler uses for that, etc.

In short; as long as PKG_CONFIG_PATH exists, these problems will exist.
Any change to how PKG_CONFIG_PATH is set, is a workaround, not a fix.
It is not the *value* of PKG_CONFIG_PATH that is wrong, it is the
concept of its existance.

--
Best regards,
   Jakob Oestergaard
_______________________________________________
Digikam-users mailing list
[hidden email]
https://mail.kde.org/mailman/listinfo/digikam-users
Reply | Threaded
Open this post in threaded view
|

Re: Error in compiling from svn

Arnd Baecker
On Mon, 25 Jun 2007, Jakob [utf-8] �^Xstergaard wrote:

[ ... snip - long detailed analysis ... ]

Isn't this
http://bugs.kde.org/show_bug.cgi?id=147269
new bug also related to the whole problem?

It would be great if these issues could be
addressed, so that more people could compile
and use the current version; however, with my knowledge
I am out of the game...
Digikam gurus seem to be needed to solve this ...

Best, Arnd




_______________________________________________
Digikam-users mailing list
[hidden email]
https://mail.kde.org/mailman/listinfo/digikam-users
Reply | Threaded
Open this post in threaded view
|

Re: Error in compiling from svn

Jakob "Østergaard"
On Tuesday 26 June 2007, Arnd Baecker wrote:
> On Mon, 25 Jun 2007, Jakob [utf-8] �^Xstergaard wrote:
>
> [ ... snip - long detailed analysis ... ]
>
> Isn't this
> http://bugs.kde.org/show_bug.cgi?id=147269
> new bug also related to the whole problem?

I think that it goes into the "related" category. The problem described
in 147269 is that there's no good way to specify where libkdcraw is
really located.

That is not the same as solving the problem with PKG_CONFIG_PATH versus
the linker path, although solving 147269 properly and completely would
involve solving the PKG_CONFIG_PATH problem too.

> It would be great if these issues could be
> addressed, so that more people could compile
> and use the current version; however, with my knowledge
> I am out of the game...
> Digikam gurus seem to be needed to solve this ...

I wonder how widely used pkg_config is (?) Is it a digikam-only thing (I
doubt it) or is it a general KDE thing?

--
Best regards,
   Jakob Oestergaard



_______________________________________________
Digikam-users mailing list
[hidden email]
https://mail.kde.org/mailman/listinfo/digikam-users
Reply | Threaded
Open this post in threaded view
|

Re: Error in compiling from svn

Bugzilla from pave@o2.pl
In reply to this post by Arnd Baecker
Arnd Baecker wrote:

> Hmm, I am a bit surprised that configuration should work
> when two different exiv2/kexiv2 are around ...

OK, just for your information.

I decided to temporary remove libkexiv2* from the system lib location and
restarted make. The compilation failed at the same point, but now
complaining that it couldn't find libkexiv2 library, which was still
installed in the homedir location specified by -L parameter.
So I decided to configure everything once again, with libexiv2* only in my
homedir. It went fine, and compilation succeeded.

But now when I run digiKam, the stdout/err says:

KIPI (loading): WARNING: KIPI::PluginLoader:: createInstanceFromLibrary
returned 0 for JPEGLossless (kipiplugin_jpeglossless) with error number 3
KIPI (loading): WARNING: KLibLoader says: libkexiv2.so.0: cannot open shared
object file: No such file or directory

several times, when loading various stuff. I don't have access to many
useful features (such as change date/time) anymore. Restoring the
system-wide libkexiv* didn't help.

Strange, isn't it?

Best,
Paweł

_______________________________________________
Digikam-users mailing list
[hidden email]
https://mail.kde.org/mailman/listinfo/digikam-users
Reply | Threaded
Open this post in threaded view
|

Re: Error in compiling from svn

Arnd Baecker


On Wed, 27 Jun 2007, [UTF-8] Pawe�^B Marciniak wrote:

> Arnd Baecker wrote:
>
> > Hmm, I am a bit surprised that configuration should work
> > when two different exiv2/kexiv2 are around ...
>
> OK, just for your information.
>
> I decided to temporary remove libkexiv2* from the system lib location and
> restarted make. The compilation failed at the same point, but now
> complaining that it couldn't find libkexiv2 library, which was still
> installed in the homedir location specified by -L parameter.
> So I decided to configure everything once again, with libexiv2* only in my
> homedir. It went fine, and compilation succeeded.
Great! Better than before ;-)

> But now when I run digiKam, the stdout/err says:
>
> KIPI (loading): WARNING: KIPI::PluginLoader:: createInstanceFromLibrary
> returned 0 for JPEGLossless (kipiplugin_jpeglossless) with error number 3
> KIPI (loading): WARNING: KLibLoader says: libkexiv2.so.0: cannot open shared
> object file: No such file or directory
>
> several times, when loading various stuff. I don't have access to many
> useful features (such as change date/time) anymore. Restoring the
> system-wide libkexiv* didn't help.
>
> Strange, isn't it?
It is annoying ... ;-),

Just to  be sure, the script I use to run a self-compiled digikam is:

################ <- snip here
#!/bin/bash

export LANG=C
export DIGIKAMDEST=/home/<place_of_digikam>
export KDEDIRS=$DIGIKAMDEST:/usr
export LD_LIBRARY_PATH=$DIGIKAMDEST/lib:$LD_LIBRARY_PATH
export LDPATH=$DIGIKAMDEST/lib:$LDPATH
export PATH=$DIGIKAMDEST/bin:$PATH

hash -r
kdeinit
digikam

################ <- snip here

But presumably you have set these variables already...
And surely libkexiv* is in  $DIGIKAMDEST/lib/

What does
  ldd $DIGIKAMDEST/bin/digikam
give?

Best, Arnd

_______________________________________________
Digikam-users mailing list
[hidden email]
https://mail.kde.org/mailman/listinfo/digikam-users