[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: bug in libtool rpath setting for _LT_AC_TAGVAR(hardcode_libdir_flag_
From: |
James Andrewartha |
Subject: |
Re: bug in libtool rpath setting for _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) (libtool 1.5.22) |
Date: |
Thu, 14 Dec 2006 01:23:01 +0900 (WST) |
On Wed, 13 Dec 2006, Ralf Wildenhues wrote:
> * James Andrewartha wrote on Wed, Dec 13, 2006 at 12:53:32AM CET:
>>
>> The stable libtool release has a bug in libtool.m4 that sets
>> _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) to '${wl}--rpath ${wl}$libdir'
>> by default instead of '${wl}-rpath ${wl}$libdir' (one less -). This causes
>> the build failure seen at
>> http://jhbuild.bxlug.be/builds/2006-12-12-0005/logs/evolution-data-server/#build
>>
>> This was fixed in the development release two years ago:
>
> Yes, but we never knew or thought it was a necessity, we fixed it for
> consistency only, thinking that ld accepts both -rpath and --rpath:
> <http://lists.gnu.org/archive/html/libtool-patches/2004-11/msg00039.html>
>
> And if you look closer at the build log, you'll find earlier link
> command lines that succeed with --rpath. So the failure is of a
> different nature, but it does look like it could be a libtool bug.
> Where are libnss3.so, libsmime3.so, libssl3.so, and libsoftokn3.so
> located? Could you rerun 'make' non-parallel so we see which link
> is actually failing?
They're located in
/scratch/gnometinderbox/jhautobuild/build-output/lib/xulrunner-1.8.1.1
which is included via -L. pkg-config --libs xulrunner-nspr returns:
-L/scratch/gnometinderbox/jhautobuild/build-output/lib/xulrunner-1.8.1.1
-lplds4 -lplc4 -lnspr4 -lpthread -ldl
failing build:
make[4]: Entering directory
`/scratch/gnometinderbox/jhautobuild/cvs/evolution-data-server/addressbook/backends/groupwise'
/bin/sh ../../../libtool --tag=CC --mode=link gcc -O2 -Wall
-Wno-unknown-pragmas -Wno-strict-aliasing -Wno-format -Wno-cast-align -
Wall -Wmissing-prototypes -Wno-sign-compare -o create-account
create-account.o ../../../addressbook/libedata-book/libedata-book-1.2.la
../../../libedataserver/libedataserver-1.2.la
../../../servers/groupwise/libegroupwise-1.2.la -pthread
-L/scratch/gnometinderbox/jhautobuild/build-output/lib
-L/scratch/gnometinderbox/jhautobuild/build-output/lib/xulrunner-1.8.1.1
-lxml2 -lbonobo-2 -lbonobo-activation -lgmodule-2.0 -lgconf-2 -lORBit-2
-lgthread-2.0 -lgobject-2.0 -lglib-2.0 -lplds4 -lplc4 -lnspr4 -lpthread
-ldl -lpthread
gcc -O2 -Wall -Wno-unknown-pragmas -Wno-strict-aliasing -Wno-format
-Wno-cast-align -Wall -Wmissing-prototypes -Wno-sign-compare -o
.libs/create-account create-account.o -pthread
../../../addressbook/libedata-book/.libs/libedata-book-1.2.so
../../../libedataserver/.libs/libedataserver-1.2.so
../../../servers/groupwise/.libs/libegroupwise-1.2.so
-L/scratch/gnometinderbox/jhautobuild/build-output/lib
-L/scratch/gnometinderbox/jhautobuild/build-output/lib/xulrunner-1.8.1.1
/scratch/gnometinderbox/jhautobuild/build-output/lib/libxml2.so
/scratch/gnometinderbox/jhautobuild/build-output/lib/libbonobo-2.so
/scratch/gnometinderbox/jhautobuild/build-output/lib/libbonobo-activation.so
/scratch/gnometinderbox/jhautobuild/build-output/lib/libgmodule-2.0.so
/scratch/gnometinderbox/jhautobuild/build-output/lib/libgconf-2.so
/scratch/gnometinderbox/jhautobuild/build-output/lib/libORBit-2.so
/scratch/gnometinderbox/jhautobuild/build-output/lib/libgthread-2.0.so
/scratch/gnometinderbox/jhautobuild/build-output/lib/libgobject-2.0.so
/scratch/gnometinderbox/jhautobuild/build-output/lib/libglib-2.0.so
-lplds4 -lplc4 -lnspr4 -ldl -lpthread -Wl,--rpath
-Wl,/scratch/gnometinderbox/jhautobuild/build-output/lib
/usr/bin/ld: warning: libnss3.so, needed by
/scratch/gnometinderbox/jhautobuild/cvs/evolution-data-server/camel/.libs/libcamel-1.2.so.0,
not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libsmime3.so, needed by
/scratch/gnometinderbox/jhautobuild/cvs/evolution-data-server/camel/.libs/libcamel-1.2.so.0,
not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libssl3.so, needed by
/scratch/gnometinderbox/jhautobuild/cvs/evolution-data-server/camel/.libs/libcamel-1.2.so.0,
not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libsoftokn3.so, needed by
/scratch/gnometinderbox/jhautobuild/cvs/evolution-data-server/camel/.libs/libcamel-1.2.so.0,
not found (try using -rpath or -rpath-link)
/scratch/gnometinderbox/jhautobuild/cvs/evolution-data-server/camel/.libs/libcamel-1.2.so.0:
undefined reference to address@hidden'
/scratch/gnometinderbox/jhautobuild/cvs/evolution-data-server/camel/.libs/libcamel-1.2.so.0:
undefined reference to address@hidden'
/scratch/gnometinderbox/jhautobuild/cvs/evolution-data-server/camel/.libs/libcamel-1.2.so.0:
undefined reference to address@hidden'
/scratch/gnometinderbox/jhautobuild/cvs/evolution-data-server/camel/.libs/libcamel-1.2.so.0:
undefined reference to address@hidden'
/scratch/gnometinderbox/jhautobuild/cvs/evolution-data-server/camel/.libs/libcamel-1.2.so.0:
undefined reference to address@hidden'
collect2: ld returned 1 exit status
> Could you post
> ./libtool --config
>
> for the libtool script generated by the build, from the
> /scratch/gnometinderbox/jhautobuild/cvs/evolution-data-server directory?
# Libtool was configured on host mudhead:
# Shell to use when invoking shell scripts.
SHELL="/bin/sh"
# Whether or not to build shared libraries.
build_libtool_libs=yes
# Whether or not to build static libraries.
build_old_libs=no
# 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
# Whether or not to optimize for fast installation.
fast_install=yes
# The host system.
host_alias=
host=alphaev68-unknown-linux-gnu
host_os=linux-gnu
# The build system.
build_alias=
build=alphaev68-unknown-linux-gnu
build_os=linux-gnu
# An echo program that does not interpret backslashes.
echo="echo"
# The archiver.
AR="ar"
AR_FLAGS="cru"
# A C compiler.
LTCC="gcc"
# LTCC compiler flags.
LTCFLAGS="-O2 -Wall -Wno-unknown-pragmas -Wno-strict-aliasing -Wno-format
-Wno-cast-align"
# A language-specific compiler.
CC="gcc"
# Is the compiler the GNU C compiler?
with_gcc=yes
# An ERE matcher.
EGREP="/bin/grep -E"
# The linker used to build libraries.
LD="/usr/bin/ld"
# Whether we need hard or soft links.
LN_S="ln -s"
# A BSD-compatible nm program.
NM="/usr/bin/nm -B"
# A symbol stripping program
STRIP="strip"
# Used to examine libraries when file_magic_cmd begins "file"
MAGIC_CMD=file
# Used on cygwin: DLL creation program.
DLLTOOL="dlltool"
# Used on cygwin: object dumper.
OBJDUMP="objdump"
# Used on cygwin: assembler.
AS="as"
# The name of the directory that contains temporary libtool files.
objdir=.libs
# How to create reloadable object files.
reload_flag=" -r"
reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs"
# How to pass a linker flag through the compiler.
wl="-Wl,"
# Object file suffix (normally "o").
objext="o"
# Old archive suffix (normally "a").
libext="a"
# Shared library suffix (normally ".so").
shrext_cmds='.so'
# Executable file suffix (normally "").
exeext=""
# Additional compiler flags for building library objects.
pic_flag=" -fPIC -DPIC"
pic_mode=default
# What is the maximum length of a command?
max_cmd_len=65536
# Does compiler simultaneously support -c and -o options?
compiler_c_o="yes"
# Must we lock files when doing compilation?
need_locks="no"
# Do we need the lib prefix for modules?
need_lib_prefix=no
# Do we need a version for libraries?
need_version=no
# Whether dlopen is supported.
dlopen_support=unknown
# Whether dlopen of programs is supported.
dlopen_self=unknown
# Whether dlopen of statically linked programs is supported.
dlopen_self_static=unknown
# Compiler flag to prevent dynamic linking.
link_static_flag="-static"
# Compiler flag to turn off builtin functions.
no_builtin_flag=" -fno-builtin"
# 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"
# Compiler flag to generate thread-safe objects.
thread_safe_flag_spec=""
# Library versioning type.
version_type=linux
# 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"
# Commands used to build and install an old-style archive.
RANLIB="ranlib"
old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs\$old_deplibs~\$RANLIB
\$oldlib"
old_postinstall_cmds="chmod 644 \$oldlib~\$RANLIB \$oldlib"
old_postuninstall_cmds=""
# 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 and install a shared archive.
archive_cmds="\$CC -shared \$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 \$libobjs \$deplibs \$compiler_flags \${wl}-soname
\$wl\$soname \${wl}-version-script \${wl}\$output_objdir/\$libname.ver -o
\$lib"
postinstall_cmds=""
postuninstall_cmds=""
# Commands used to build a loadable module (assumed same as above if
empty)
module_cmds=""
module_expsym_cmds=""
# Commands to strip libraries.
old_striplib="strip --strip-debug"
striplib="strip --strip-unneeded"
# Dependencies to place before the objects being linked to create a
# shared library.
predep_objects=""
# Dependencies to place after the objects being linked to create a
# shared library.
postdep_objects=""
# Dependencies to place before the objects being linked to create a
# shared library.
predeps=""
# Dependencies to place after the objects being linked to create a
# shared library.
postdeps=""
# The library search path used internally by the compiler when linking
# a shared library.
compiler_lib_search_path=""
# 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"
# Flag that allows shared libraries with undefined symbols to be built.
allow_undefined_flag=""
# Flag that forces no undefined symbols.
no_undefined_flag=""
# Commands used to finish a libtool library installation in a directory.
finish_cmds="PATH=\\\"\\\$PATH:/sbin\\\" ldconfig -n \$libdir"
# Same as above, but a single script fragment to be evaled but not shown.
finish_eval=""
# 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'"
# Transform the output of nm in a proper C declaration
global_symbol_to_cdecl="sed -n -e 's/^. .* \\(.*\\)\$/extern int \\1;/p'"
# Transform the output of nm in a C name address pair
global_symbol_to_c_name_address="sed -n -e 's/^: \\([^ ]*\\) \$/
{\\\"\\1\\\", (lt_ptr) 0},/p' -e 's/^[BCDEGRST] \\([^ ]*\\) \\([^ ]*\\)\$/
{\"\\2\", (lt_ptr) \\&\\2},/p'"
# This is the shared library runtime path variable.
runpath_var=LD_RUN_PATH
# This is the shared library path variable.
shlibpath_var=LD_LIBRARY_PATH
# Is shlibpath searched before the hard-coded library search path?
shlibpath_overrides_runpath=no
# How to hardcode a shared library path into an executable.
hardcode_action=immediate
# Whether we should hardcode library paths into libraries.
hardcode_into_libs=yes
# 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 during linking hardcodes DIR into the
# resulting binary.
hardcode_direct=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
# Variables whose values should be saved in libtool wrapper scripts and
# restored at relink time.
variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH
GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
# Whether libtool must link a program against all its dependency
libraries.
link_all_deplibs=no
# Compile-time system search path for libraries
sys_lib_search_path_spec=" /usr/lib/gcc/alpha-linux-gnu/4.1.2/
/usr/lib/gcc/alpha-linux-gnu/4.1.2/
/usr/lib/gcc/alpha-linux-gnu/4.1.2/../../../../alpha-linux-gnu/lib/alpha-linux-gnu/4.1.2/
/usr/lib/gcc/alpha-linux-gnu/4.1.2/../../../../alpha-linux-gnu/lib/
/usr/lib/gcc/alpha-linux-gnu/4.1.2/../../../alpha-linux-gnu/4.1.2/
/usr/lib/gcc/alpha-linux-gnu/4.1.2/../../../ /lib/alpha-linux-gnu/4.1.2/
/lib/ /usr/lib/alpha-linux-gnu/4.1.2/ /usr/lib/"
# Run-time system search path for libraries
sys_lib_dlsearch_path_spec="/lib /usr/lib /usr/X11R6/lib /usr/lib/atlas
/lib/alpha-linux-gnu /usr/lib/alpha-linux-gnu "
# Fix the shell variable $srcfile for the compiler.
fix_srcfile_path=""
# 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"
# The commands to extract the exported symbol list from a shared archive.
extract_expsyms_cmds=""
# Symbols that should not be listed in the preloaded symbols.
exclude_expsyms="_GLOBAL_OFFSET_TABLE_"
# Symbols that must always be exported.
include_expsyms=""
> Also interesting would be (bzip2'ed) log of
>
> cd /scratch/gnometinderbox/jhautobuild/cvs/evolution-data-server/camel
> rm libcamel-1.2.la
> make libcamel-1.2.la LIBTOOL='../libtool --debug'
>
> and similar for the link that is actually failing.
Attatched.
--
# TRS-80 trs80(a)ucc.gu.uwa.edu.au #/ "Otherwise Bub here will do \
# UCC Wheel Member http://trs80.ucc.asn.au/ #| what squirrels do best |
[ "There's nobody getting rich writing ]| -- Collect and hide your |
[ software that I know of" -- Bill Gates, 1980 ]\ nuts." -- Acid Reflux #231 /
groupwise.debug.bz2
Description: Binary data
libcamel-1.2.la.debug.bz2
Description: Binary data