tech-pkg archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

warning about conflicting libraries from base and pkgsrc



Hi,

on NetBSD 3.1 with /usr/lib/libz.so.0.4  and /usr/pkg/lib/libz.so.1.0.2
(from zlib-1.2.3) I just saw this, building a program without pkgsrc:

 gcc -I/usr/pkg/include -g -O2  -L/usr/pkg/lib -lcurl -L/usr/pkg/lib
  -Wl,-R/usr/pkg/lib -lidn -lssl -lcrypto -lz -o esniper  auction.o
  auctionfile.o  auctioninfo.o buffer.o esniper.o  history.o html.o http.o
  options.o util.o -L/usr/pkg/lib -lcurl -L/usr/pkg/lib -Wl,-R/usr/pkg/lib
  -lidn -lssl -lcrypto -lz 
 ld: warning: libz.so.0, needed by /usr/pkg/lib/libcurl.so, may conflict
  with libz.so.1
 ld: warning: libz.so.0, needed by /usr/pkg/lib/libcurl.so, may conflict
  with libz.so.1


The resulting binary includes this information

  $ objdump -x esniper
  ...
  Dynamic Section:
    NEEDED      libcurl.so.4
    NEEDED      libidn.so.11
    NEEDED      libssl.so.3
    NEEDED      libcrypto.so.2
    NEEDED      libz.so.1
    NEEDED      libc.so.12
    RPATH       /usr/pkg/lib

NOTE: take a look at the version of libz.

  $ ldd esniper
  esniper:
        -lintl.0 => /usr/lib/libintl.so.0
        -lidn.11 => /usr/pkg/lib/libidn.so.11
        -lcrypt.0 => /lib/libcrypt.so.0
        -lcrypto.2 => /usr/lib/libcrypto.so.2
        -lssl.3 => /usr/lib/libssl.so.3
        -lz.0 => /usr/lib/libz.so.0
        -lcurl.4 => /usr/pkg/lib/libcurl.so.4
        -lz.1 => /usr/pkg/lib/libz.so.1
        -lc.12 => /usr/lib/libc.so.12

NOTE: two versions of libz will be used by this program.

Building the software within the pkgsrc framework gives me this

  $ objdump -x esniper
  ...
  Dynamic Section:
    NEEDED      libcurl.so.4
    NEEDED      libidn.so.11
    NEEDED      libssl.so.3
    NEEDED      libcrypto.so.2
    NEEDED      libz.so.0
    NEEDED      libc.so.12
    RPATH       /usr/pkg/lib

  $ ldd esniper
  esniper:
        -lintl.0 => /usr/lib/libintl.so.0
        -lidn.11 => /usr/pkg/lib/libidn.so.11
        -lcrypt.0 => /lib/libcrypt.so.0
        -lcrypto.2 => /usr/lib/libcrypto.so.2
        -lssl.3 => /usr/lib/libssl.so.3
        -lz.0 => /usr/lib/libz.so.0
        -lcurl.4 => /usr/pkg/lib/libcurl.so.4
        -lc.12 => /usr/lib/libc.so.12

Without digging further I suppose the correct result (only libz.so.0 is
recorded in the binary) comes from using "buildlink3" in pkgsrc.

However, I am curious how to avoid the warning when not using pkgsrc. I
suppose there _are_ people who build software now and then without pkgsrc.

ciao
     Klaus


Home | Main Index | Thread Index | Old Index