Hi. I'm looking for suggestion how to fix following issue:

I'm building wireshark-1.6.0 package which contains (among others)
following libraries:

wsutil/libwsutil.la (dlname='libwsutil.so.1')
wiretap/libwiretap.la

wiretap/Makefile.am has following lines to link with libwsutil.la:

libwiretap_la_LIBADD = libwiretap_generated.la 
${top_builddir}/wsutil/libwsutil.la $(GLIB_LIBS)
libwiretap_la_DEPENDENCIES = libwiretap_generated.la 
${top_builddir}/wsutil/libwsutil.la wtap.sym

At the same time my system has wireshark-1.4.7 installed and it also
have both libs, but with different versions - for this question it's
important that I have libwsutil.so.0 installed in my system. Now if try
to do staged install for libwiretap like this:

$ cd wsutil/ && make DESTDIR=/tmp/test install
$ cd ../wiretap && make DESTDIR=/tmp/test install

libtool relinks libwiretap.so against _system_ libwsutil.so:

make[1]: Entering directory 
`/var/tmp/portage/net-analyzer/wireshark-1.6.0/work/wireshark-1.6.0/wiretap'
test -z "/usr/lib64" || mkdir -p -- "/tmp/test/usr/lib64"
 /bin/sh ../libtool --mode=install /usr/bin/install -c  'libwiretap.la' 
'/tmp/test/usr/lib64/libwiretap.la'
libtool: install: warning: relinking `libwiretap.la'
libtool: install: (cd 
/var/tmp/portage/net-analyzer/wireshark-1.6.0/work/wireshark-1.6.0/wiretap; 
/bin/sh 
/var/tmp/portage/net-analyzer/wireshark-1.6.0/work/wireshark-1.6.0/libtool  
--tag CC --mode=relink x86_64-pc-linux-gnu-gcc -DINET6 
"-D_U_=__attribute__((unused))" -O2 -pipe -march=k8 -mtune=k8 -ggdb -Wall -W 
-Wextra -Wdeclaration-after-statement -Wendif-labels -Wpointer-arith 
-Wno-pointer-sign -Warray-bounds -Wcast-align -Wformat-security 
-fexcess-precision=fast -I/usr/include -I/usr/local/include -pthread 
-I/usr/include/gtk-2.0 -I/usr/lib64/gtk-2.0/include -I/usr/include/atk-1.0 
-I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pango-1.0 
-I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/pixman-1 
-I/usr/include/freetype2 -I/usr/include/libpng14 -I/usr/include/libdrm 
-I/usr/include -Wl,--as-needed,--hash-style=gnu -Wl,--as-needed -L/usr/lib 
-L/usr/local/lib -L/usr/local/lib -L/usr/local/lib -o libwiretap.la -rpath 
/usr/lib64 -version-info 1:0:0 -export-symbols wtap.sym [cutted many .lo files] 
libwiretap_la-wtap.lo libwiretap_generated.la ../wsutil/libwsutil.la -pthread 
-Wl,--export-dynamic -lgthread-2.0 -lgmodule-2.0 -lrt -lglib-2.0 -lz 
-inst-prefix-dir /tmp/test)
libtool: relink: warning: `/usr/lib/libgthread-2.0.la' seems to be moved
libtool: relink: warning: `/usr/lib/libgmodule-2.0.la' seems to be moved
libtool: relink: warning: `/usr/lib/libglib-2.0.la' seems to be moved
libtool: relink: echo "{ global:" > .libs/libwiretap.ver
libtool: relink:  cat wtap.sym | sed -e "s/\(.*\)/\1;/" >> .libs/libwiretap.ver
libtool: relink:  echo "local: *; };" >> .libs/libwiretap.ver
libtool: relink:  x86_64-pc-linux-gnu-gcc -shared  -fPIC -DPIC [cutted many .o 
files] .libs/libwiretap_la-wtap.o  -Wl,--whole-archive 
./.libs/libwiretap_generated.a -Wl,--no-whole-archive  -L/usr/lib 
-L/usr/local/lib -L/tmp/test/usr/lib64 -L/usr/lib64 -lwsutil -lgthread-2.0 
-lpthread -lgmodule-2.0 -ldl -lglib-2.0 -lrt -lz  -O2 -march=k8 -mtune=k8 
-pthread -Wl,--as-needed -Wl,--hash-style=gnu -Wl,--as-needed -pthread 
-Wl,--export-dynamic   -pthread -Wl,-soname -Wl,libwiretap.so.1 
-Wl,-version-script -Wl,.libs/libwiretap.ver -o .libs/libwiretap.so.1.0.0
libtool: install: /usr/bin/install -c .libs/libwiretap.so.1.0.0T 
/tmp/test/usr/lib64/libwiretap.so.1.0.0
libtool: install: (cd /tmp/test/usr/lib64 && { ln -s -f libwiretap.so.1.0.0 
libwiretap.so.1 || { rm -f libwiretap.so.1 && ln -s libwiretap.so.1.0.0 
libwiretap.so.1; }; })
libtool: install: (cd /tmp/test/usr/lib64 && { ln -s -f libwiretap.so.1.0.0 
libwiretap.so || { rm -f libwiretap.so && ln -s libwiretap.so.1.0.0 
libwiretap.so; }; })
libtool: install: /usr/bin/install -c .libs/libwiretap.lai 
/tmp/test/usr/lib64/libwiretap.la
libtool: install: warning: remember to run `libtool --finish /usr/lib64'
make[1]: Nothing to be done for `install-data-am'.
make[1]: Leaving directory 
`/var/tmp/portage/net-analyzer/wireshark-1.6.0/work/wireshark-1.6.0/wiretap'

Why libtool prepends -L/usr/lib -L/usr/local/lib before
-L/tmp/test/usr/lib64? How to force libtool link agains library inside
DESTDIR (library bundled with package) instead of system one?

libtool --config is in attachment.

Thank you in advance for any hints,
--
Peter.
./libtool --config

# Whether or not to build static libraries.
build_old_libs=no

# Which release of libtool.m4 was used?
macro_version=2.4
macro_revision=1.3293

# Whether or not to build shared libraries.
build_libtool_libs=yes

# What type of objects to build.
pic_mode=default

# Whether or not to optimize for fast installation.
fast_install=needless

# Shell to use when invoking shell scripts.
SHELL="/bin/sh"

# An echo program that protects backslashes.
ECHO="printf %s\\n"

# The host system.
host_alias=x86_64-pc-linux-gnu
host=x86_64-pc-linux-gnu
host_os=linux-gnu

# The build system.
build_alias=x86_64-pc-linux-gnu
build=x86_64-pc-linux-gnu
build_os=linux-gnu

# A sed program that does not truncate output.
SED="/bin/sed"

# Sed that helps us avoid accidentally triggering echo(1) options like -n.
Xsed="$SED -e 1s/^X//"

# A grep program that handles long lines.
GREP="/bin/grep"

# An ERE matcher.
EGREP="/bin/grep -E"

# A literal string matcher.
FGREP="/bin/grep -F"

# A BSD- or MS-compatible name lister.
NM="/usr/bin/nm -B"

# Whether we need soft or hard links.
LN_S="ln -s"

# What is the maximum length of a command?
max_cmd_len=1572864

# Object file suffix (normally "o").
objext=o

# Executable file suffix (normally "").
exeext=

# whether the shell understands "unset".
lt_unset=unset

# turn spaces into newlines.
SP2NL="tr \\040 \\012"

# turn newlines into spaces.
NL2SP="tr \\015\\012 \\040\\040"

# convert $build file names to $host format.
to_host_file_cmd=func_convert_file_noop

# convert $build files to toolchain format.
to_tool_file_cmd=func_convert_file_noop

# An object symbol dumper.
OBJDUMP="x86_64-pc-linux-gnu-objdump"

# Method to check whether dependent libraries are shared objects.
deplibs_check_method="pass_all"

# Command to use when deplibs_check_method = "file_magic".
file_magic_cmd="\$MAGIC_CMD"

# How to find potential files when deplibs_check_method = "file_magic".
file_magic_glob=""

# Find potential files using nocaseglob when deplibs_check_method = 
"file_magic".
want_nocaseglob="no"

# DLL creation program.
DLLTOOL="false"

# Command to associate shared and link libraries.
sharedlib_from_linklib_cmd="printf %s\\n"

# The archiver.
AR="x86_64-pc-linux-gnu-ar"

# Flags to create an archive.
AR_FLAGS="cru"

# How to feed a file listing to the archiver.
archiver_list_spec="@"

# A symbol stripping program.
STRIP="x86_64-pc-linux-gnu-strip"

# Commands used to install an old-style archive.
RANLIB="x86_64-pc-linux-gnu-ranlib"
old_postinstall_cmds="chmod 644 \$oldlib~\$RANLIB \$oldlib"
old_postuninstall_cmds=""

# Whether to use a lock for old archive extraction.
lock_old_archive_extraction=no

# A C compiler.
LTCC="x86_64-pc-linux-gnu-gcc"

# LTCC compiler flags.
LTCFLAGS="-DINET6 -D_U_=\"__attribute__((unused))\" -O2 -pipe -march=k8 
-mtune=k8 -ggdb -Wall -W -Wextra -Wdeclaration-after-statement -Wendif-labels 
-Wpointer-arith -Wno-pointer-sign -Warray-bounds -Wcast-align -Wformat-security 
-fexcess-precision=fast -I/usr/include -I/usr/local/include -pthread 
-I/usr/include/gtk-2.0 -I/usr/lib64/gtk-2.0/include -I/usr/include/atk-1.0 
-I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pango-1.0 
-I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/pixman-1 
-I/usr/include/freetype2 -I/usr/include/libpng14 -I/usr/include/libdrm   
-I/usr/include"

# Take the output of nm and produce a listing of raw symbols and C names.
global_symbol_pipe="sed -n -e 's/^.*[    ]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[      
 ][      ]*\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2 \\2/p' | sed '/ __gnu_lto/d'"

# Transform the output of nm in a proper C declaration.
global_symbol_to_cdecl="sed -n -e 's/^T .* \\(.*\\)\$/extern int \\1();/p' -e 
's/^[ABCDGIRSTW]* .* \\(.*\\)\$/extern char \\1;/p'"

# Transform the output of nm in a C name address pair.
global_symbol_to_c_name_address="sed -n -e 's/^: \\([^ ]*\\)[ ]*\$/  
{\\\"\\1\\\", (void *) 0},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\([^ ]*\\)\$/  
{\"\\2\", (void *) \\&\\2},/p'"

# Transform the output of nm in a C name address pair when lib prefix is needed.
global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \\([^ ]*\\)[ ]*\$/  
{\\\"\\1\\\", (void *) 0},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\(lib[^ 
]*\\)\$/  {\"\\2\", (void *) \\&\\2},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\([^ 
]*\\)\$/  {\"lib\\2\", (void *) \\&\\2},/p'"

# Specify filename containing input files for $NM.
nm_file_list_spec="@"

# The root where to search for dependent libraries,and in which our libraries 
should be installed.
lt_sysroot=

# The name of the directory that contains temporary libtool files.
objdir=.libs

# Used to examine libraries when file_magic_cmd begins with "file".
MAGIC_CMD=file

# Must we lock files when doing compilation?
need_locks="no"

# Manifest tool.
MANIFEST_TOOL=":"

# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
DSYMUTIL=""

# Tool to change global to local symbols on Mac OS X.
NMEDIT=""

# Tool to manipulate fat objects and archives on Mac OS X.
LIPO=""

# ldd/readelf like tool for Mach-O binaries on Mac OS X.
OTOOL=""

# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
OTOOL64=""

# Old archive suffix (normally "a").
libext=a

# Shared library suffix (normally ".so").
shrext_cmds=".so"

# The commands to extract the exported symbol list from a shared archive.
extract_expsyms_cmds=""

# Variables whose values should be saved in libtool wrapper scripts and
# restored at link time.
variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX 
COMPILER_PATH LIBRARY_PATH"

# Do we need the "lib" prefix for modules?
need_lib_prefix=no

# Do we need a version for libraries?
need_version=no

# Library versioning type.
version_type=linux

# Shared library runtime path variable.
runpath_var=LD_RUN_PATH

# Shared library path variable.
shlibpath_var=LD_LIBRARY_PATH

# Is shlibpath searched before the hard-coded library search path?
shlibpath_overrides_runpath=yes

# Format of library name prefix.
libname_spec="lib\$name"

# List of archive names.  First name is the real one, the rest are links.
# The last name is the one that the linker finds with -lNAME
library_names_spec="\${libname}\${release}\${shared_ext}\$versuffix 
\${libname}\${release}\${shared_ext}\$major \$libname\${shared_ext}"

# The coded name of the library, if different from the real name.
soname_spec="\${libname}\${release}\${shared_ext}\$major"

# Permission mode override for installation of shared libraries.
install_override_mode=""

# Command to use after installation of a shared archive.
postinstall_cmds=""

# Command to use after uninstallation of a shared archive.
postuninstall_cmds=""

# Commands used to finish a libtool library installation in a directory.
finish_cmds="PATH=\\\"\\\$PATH:/sbin\\\" ldconfig -n \$libdir"

# As "finish_cmds", except a single script fragment to be evaled but
# not shown.
finish_eval=""

# Whether we should hardcode library paths into libraries.
hardcode_into_libs=yes

# Compile-time system search path for libraries.
sys_lib_search_path_spec="/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.2 /usr/lib64 
/lib64 /usr/x86_64-pc-linux-gnu/lib "

# Run-time system search path for libraries.
sys_lib_dlsearch_path_spec="/lib /usr/lib /usr/local/lib 
//usr/lib32/opengl/xorg-x11/lib //usr/lib64/opengl/xorg-x11/lib /lib64 
/usr/lib64 /usr/local/lib64 /lib32 /usr/lib32 /usr/local/lib32 /lib /usr/lib 
/usr/x86_64-pc-linux-gnu/lib /usr/lib/gcc/x86_64-pc-linux-gnu/4.5.2 
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.2/32 //usr/lib64/xulrunner-2.0 
/opt/blackdown-jdk-1.4.2.03/jre/lib/amd64/ 
/opt/blackdown-jdk-1.4.2.03/jre/lib/amd64/native_threads/ 
/opt/blackdown-jdk-1.4.2.03/jre/lib/amd64/classic/ 
/opt/blackdown-jdk-1.4.2.03/jre/lib/amd64/server/ /usr/lib64/qt4 /usr/lib32/qt4 
/usr/lib/qt4 /usr/qt/3/lib /usr/qt/3/lib64 /usr/qt/3/lib32 "

# Whether dlopen is supported.
dlopen_support=yes

# Whether dlopen of programs is supported.
dlopen_self=yes

# Whether dlopen of statically linked programs is supported.
dlopen_self_static=no

# Commands to strip libraries.
old_striplib="x86_64-pc-linux-gnu-strip --strip-debug"
striplib="x86_64-pc-linux-gnu-strip --strip-unneeded"


# The linker used to build libraries.
LD="/usr/x86_64-pc-linux-gnu/bin/ld -m elf_x86_64"

# How to create reloadable object files.
reload_flag=" -r"
reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs"

# Commands used to build an old-style archive.
old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs~\$RANLIB \$oldlib"

# A language specific compiler.
CC="x86_64-pc-linux-gnu-gcc"

# Is the compiler the GNU compiler?
with_gcc=yes

# Compiler flag to turn off builtin functions.
no_builtin_flag=" -fno-builtin"

# Additional compiler flags for building library objects.
pic_flag=" -fPIC -DPIC"

# How to pass a linker flag through the compiler.
wl="-Wl,"

# Compiler flag to prevent dynamic linking.
link_static_flag="-static"

# Does compiler simultaneously support -c and -o options?
compiler_c_o="yes"

# Whether or not to add -lc for building shared libraries.
build_libtool_need_lc=no

# Whether or not to disallow shared libs when runtime libs are static.
allow_libtool_libs_with_static_runtimes=no

# Compiler flag to allow reflexive dlopens.
export_dynamic_flag_spec="\${wl}--export-dynamic"

# Compiler flag to generate shared objects directly from archives.
whole_archive_flag_spec="\${wl}--whole-archive\$convenience 
\${wl}--no-whole-archive"

# Whether the compiler copes with passing no objects directly.
compiler_needs_object="no"

# Create an old-style archive from a shared archive.
old_archive_from_new_cmds=""

# Create a temporary old-style archive to link instead of a shared archive.
old_archive_from_expsyms_cmds=""

# Commands used to build a shared archive.
archive_cmds="\$CC -shared \$pic_flag \$libobjs \$deplibs \$compiler_flags 
\${wl}-soname \$wl\$soname -o \$lib"
archive_expsym_cmds="echo \\\"{ global:\\\" > \$output_objdir/\$libname.ver~
            cat \$export_symbols | sed -e \\\"s/\\\\(.*\\\\)/\\\\1;/\\\" >> 
\$output_objdir/\$libname.ver~
            echo \\\"local: *; };\\\" >> \$output_objdir/\$libname.ver~
            \$CC -shared \$pic_flag \$libobjs \$deplibs \$compiler_flags 
\${wl}-soname \$wl\$soname \${wl}-version-script 
\${wl}\$output_objdir/\$libname.ver -o \$lib"

# Commands used to build a loadable module if different from building
# a shared archive.
module_cmds=""
module_expsym_cmds=""

# Whether we are building with GNU ld or not.
with_gnu_ld="yes"

# Flag that allows shared libraries with undefined symbols to be built.
allow_undefined_flag=""

# Flag that enforces no undefined symbols.
no_undefined_flag=""

# Flag to hardcode $libdir into a binary during linking.
# This must work even if $libdir does not exist
hardcode_libdir_flag_spec="\${wl}-rpath \${wl}\$libdir"

# If ld is used when linking, flag to hardcode $libdir into a binary
# during linking.  This must work even if $libdir does not exist.
hardcode_libdir_flag_spec_ld=""

# Whether we need a single "-rpath" flag with a separated argument.
hardcode_libdir_separator=""

# Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
# DIR into the resulting binary.
hardcode_direct=no

# Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
# DIR into the resulting binary and the resulting library dependency is
# "absolute",i.e impossible to change by setting ${shlibpath_var} if the
# library is relocated.
hardcode_direct_absolute=no

# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
# into the resulting binary.
hardcode_minus_L=no

# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
# into the resulting binary.
hardcode_shlibpath_var=unsupported

# Set to "yes" if building a shared library automatically hardcodes DIR
# into the library and all subsequent libraries and executables linked
# against it.
hardcode_automatic=no

# Set to yes if linker adds runtime paths of dependent libraries
# to runtime path list.
inherit_rpath=no

# Whether libtool must link a program against all its dependency libraries.
link_all_deplibs=unknown

# Set to "yes" if exported symbols are required.
always_export_symbols=no

# The commands to list exported symbols.
export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | 
\$SED 's/.* //' | sort | uniq > \$export_symbols"

# Symbols that should not be listed in the preloaded symbols.
exclude_expsyms="_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*"

# Symbols that must always be exported.
include_expsyms=""

# Commands necessary for linking programs (against libraries) with templates.
prelink_cmds=""

# Commands necessary for finishing linking programs.
postlink_cmds=""

# Specify filename containing input files.
file_list_spec=""

# How to hardcode a shared library path into an executable.
hardcode_action=immediate

# The directories searched by this compiler when creating a shared library.
compiler_lib_search_dirs=""

# Dependencies to place before and after the objects being linked to
# create a shared library.
predep_objects=""
postdep_objects=""
predeps=""
postdeps=""

# The library search path used internally by the compiler when linking
# a shared library.
compiler_lib_search_path=""


_______________________________________________
https://lists.gnu.org/mailman/listinfo/libtool

Reply via email to