SILC Client 1.1 Beta4
jayjwa
jayjwa at atr2.ath.cx
Tue May 22 12:49:07 CEST 2007
On Tue, 22 May 2007, Pekka Riikonen wrote:
-> : So ld, given -lsilc
-> :
-> : was happy grabbing /usr/local/lib/libsilc.so,
-> :
-> It's difficult to say why it was doing that without seeing how the
-> silc-client was configured with ./configure.
Both beta4 and 5 configure command was (I also used, to test only,
./configure && make in beta4, same problem)
./configure '--prefix=/usr/local' '--disable-debug' '--with-gnu-ld' '--with-etcdir=/usr/local/etc/silc' '--with-docdir=/usr/doc/silc-client-1.1-beta5' '--with-pthreads' '--with-helpdir=/usr/local/share/silc/help' '--with-perl=yes' '--with-perl-lib=site' '--with-simdir=/usr/local/share/silc/modules'
Link command was:
gcc -g -O2 -Wall -o silc gui-entry.o gui-expandos.o gui-printtext.o gui-readline.o gui-windows.o lastlog.o mainwindows.o mainwindow-activity.o mainwindows-layout.o statusbar.o statusbar-config.o statusbar-items.o term.o term-dummy.o tparm.o term-terminfo.o terminfo-core.o textbuffer.o textbuffer-commands.o textbuffer-reformat.o textbuffer-view.o silc.o module-formats.o -Wl,-E -Wl,--export-dynamic -Wl,--export-dynamic -Wl,--export-dynamic ../fe-common/silc/libfe_common_silc.a ../fe-common/core/libfe_common_core.a ../silc/libsilc.a ../silc/core/libsilc_core.a ../core/libcore.a ../lib-config/libirssi_config.a ../lib-popt/libpopt.a /tmp/silc-client-1.1-beta5/lib/.libs/libsilcclient.a ../perl/.libs/libperl_core_static.a ../perl/.libs/libfe_perl_static.a -L/usr/local/lib /usr/lib/perl5/5.8.8/i686-linux-thread-multi/auto/DynaLoader/DynaLoader.a -L/usr/lib/perl5/5.8.8/i686-linux-thread-multi/CORE -lperl -lnsl -lm -lcrypt -lutil /usr/lib/libgmodule-2.0.so /usr/lib/libglib-2.0.so /usr/lib/libncurses.so -L/tmp/silc-client-1.1-beta5/lib /usr/local/lib/libsilc.so -ldl -lpthread
Notice /usr/local/lib/libsilc.so -ldl -lpthread on the end, same order as -lsilc -ldl -lpthread from Makefile.defines_int
libsilc in Makefile.defines_int. Likely where '-lsilc' is coming from.
Makefile.defines_int:SILC_COMMON_LIBS= -L$(silc_top_srcdir)/lib -lsilc -ldl -lpthread
Makefile.defines_int.in:SILC_COMMON_LIBS= -L$(silc_top_srcdir)/lib -lsilc @LIBS@
-> If it found pkg-config files
-> for the SILC libraries from your system it would use them even though they
-> are too old version because current beta5 doesn't yet have a check for 1.1
-> version specifically (it doesn't check version). In this case it would
-> have then linked with the libraries from your system.
No silc in any *.la file, nor any pkgconfig file.
Full pkgconfig path:
/usr/lib/pkgconfig:/usr/local/lib/pkgconfig:/usr/X11R7/lib/pkgconfig
/usr/local/lib/pkgconfig: symbolic link to `/usr/lib/pkgconfig'
/usr/lib/pkgconfig files
ao.pc
apr-1.pc
apr-util-1.pc
atk.pc
audiofile.pc
autoopts.pc
blkid.pc
cairo-ft.pc
cairo-glitz.pc
cairo.pc
cairo-pdf.pc
cairo-png.pc
cairo-ps.pc
cairo-svg.pc
cairo-xlib.pc
cairo-xlib-xrender.pc
com_err.pc
devmapper-event.pc
devmapper.pc
e2p.pc
ext2fs.pc
fontconfig.pc
freetype2.pc
fribidi.pc
fuse.pc
gdk-2.0.pc
gdk-pixbuf-2.0.pc
gdk-pixbuf-xlib-2.0.pc
gdk-x11-2.0.pc
gimp-2.0.pc
gimpthumb-2.0.pc
gimpui-2.0.pc
gkrellm.pc
glib-2.0.pc
gmodule-2.0.pc
gmodule-export-2.0.pc
gmodule-no-export-2.0.pc
gnet-2.0.pc
gnutls-extra.pc
gnutls.pc
gobject-2.0.pc
gthread-2.0.pc
gtk+-2.0.pc
gtk+-unix-print-2.0.pc
gtk+-x11-2.0.pc
gutenprint.pc
gutenprintui2.pc
gutenprintui.pc
ijs.pc
ImageMagick.pc
ImageMagick++.pc
imlib2.pc
imlibgdk.pc
imlib.pc
lcms.pc
libart-2.0.pc
libcroco-0.6.pc
libcrypto.pc
libcurl.pc
libdaemon.pc
libexif.pc
libexslt.pc
libgcj.pc
libglade-2.0.pc
libgsasl.pc
libgsf-1.pc
libIDL-2.0.pc
libidn.pc
libjs.pc
libnetfilter_conntrack.pc
libnfnetlink.pc
libntlm.pc
libole2-2.0.pc
libparted.pc
libpcre.pc
libpixman.pc
libpng12.pc
libpng.pc@
libps.pc
librsvg-2.0.pc
libssl.pc
libstartup-notification-1.0.pc
libsvg-cairo.pc
libsvg.pc
libwpd-0.8.pc
libwpd-stream-0.8.pc
libxine.pc
libxml-2.0.pc
libxslt.pc
ogg.pc
openssl.pc
ORBit-2.0.pc
ORBit-CosNaming-2.0.pc
ORBit-idl-2.0.pc
ORBit-imodule-2.0.pc
pangocairo.pc
pangoft2.pc
pango.pc
pangoxft.pc
pangox.pc
sdl.pc
ss.pc
taglib.pc
tre.pc
uuid.pc
vorbisenc.pc
vorbisfile.pc
vorbis.pc
Wand.pc
/usr/X11R7/lib/pkgconfig:
(only X11 files, very long list)
-> If this wasn't the case then it in fact should have taken the library from
-> lib/ because there is explicit -L for the linker when compiling the
-> lib/ subdirectory. In this case -Llib/ -lsilc should in fact take it from
-> lib/ if lib/ was compiled.
The first -L parameter adds /usr/local/lib to the search path from the
command line, which then comes before default search
paths. -L/tmp/silc-client-1.1-beta5/lib is actually the last path
added, which makes it searched after /usr/local/lib (or whatever the
first -L is set to, happens to be /usr/local/lib here).
"ld" is from binutils-2.17.50.0.9, the only thing special about it is
that it supports all targets ld can support.
I definately should have cleaned up the old libsilc.so after it wasn't
needed anymore, so this is my fault, but I wanted to post this as I
figured others probably have been building version after version of
silc following the development and might have themselves come upon a
similar problem.
More information about the silc-users
mailing list