libtool
[Top][All Lists]
Advanced

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

should libtool --relink expand lib*.la files before -L options?


From: Mark Wright
Subject: should libtool --relink expand lib*.la files before -L options?
Date: Thu, 12 Jun 2008 00:17:11 +1000

Hi,

In the libtool 2.2.4 relink command below, the ../../taglib/libtag.la
refers to a libtag.so library in the build directory.  I'm, sorry about
the zillion compiler options, however I think only the -L options,
the ../../taglib/libtag.la and its corresponding
-L/var/tmp/pkgbuild-mwright/FOSStaglib-1.5.0-build/opt/foss/lib -ltag
options are relevant.

My hopefully simple question is: is there some way to persuade
libtool/autotools to look for the libtag.so shared library first in
/var/tmp/pkgbuild-mwright/FOSStaglib-1.5.0-build/opt/foss/lib/libtag.so.1.5.0?

As in, I was wondering if libtool should expand the:

../../taglib/libtag.la

into:

-L/var/tmp/pkgbuild-mwright/FOSStaglib-1.5.0-build/opt/foss/lib -ltag

before the other -L options?

As instead what happens is it finds an old, incompatible one in
/usr/lib/libtag.so.1.4.0, which causes the unresolved symbol errors.

In the Makefile.am it just does:

libtag_c_la_LIBADD = ../../taglib/libtag.la

This is Solaris 10u5, Sun Studio 12, libtool 2.2.4, KDE 4 project.

So this is libtool 2.2.4 finding the wrong library in /usr/lib/libtag.so.1.4.0:

goanna% /bin/bash 
/h/goanna/2/os_5.10/cbe/BUILD/FOSStaglib-1.5.0/i386/TAGLIB/1.5.0/libtool  --tag 
CXX --mode=relink /opt/SunStudio12/SUNWspro/bin/CC -D_REENTRANT 
-D__EXTENSIONS__ -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 
-D_POSIX_PTHREAD_SEMANTICS -DSOLARIS -DSOLARIS10 -DNDEBUG -DNO_DEBUG -D_UNICODE 
-DUNICODE -D_RWSTD_REENTRANT -D_XOPEN_SOURCE=500 -D_XPG5 
-I/opt/foss/include/ansi -I/opt/foss/include -I/opt/foss/include/ansi 
-library=no%Cstd 
-features=anachronisms,except,rtti,export,extensions,nestedaccess,tmplife,tmplrefstatic
 -instances=global -template=geninlinefuncs -g0 -xdebugformat=stabs -xlang=c99 
-xustr=ascii_utf16_ushort -Qoption ccfe -features=gcc -Qoption ccfe 
-features=zla -Qoption ccfe ++boolflag:sunwcch=false -xF=%none -xbuiltin=%all 
-xinline=%auto -xprefetch=auto -xprefetch_auto_type=indirect_array_access 
-xprefetch_level=3 -xalias_level=compatible -KPIC -xipo=0 -xO3 
-xregs=no%frameptr -xjobs=2 -xrestrict=%all -xthreadvar=%all -z combreloc -z 
redlocsym -z nodefaultlib -z ignore -z now -z rescan -z absexec 
-xldscope=symbolic -xlibmil -xipo=0 -xO3 -g -xtarget=pentium4 -m32 -xarch=sse2 
-xchip=pentium4 -xcache=8/64/4:256/128/8 -lc -lm -ldl -lpthread -lposix4 -lrt 
-mt -L/opt/foss/lib -L/usr/lib -R/opt/foss/lib:/usr/lib -Y 
P,/opt/foss/lib:/usr/lib -i -L/opt/foss/lib -L/usr/lib -R/opt/foss/lib:/usr/lib 
-Bdynamic -lc -lm -lCrun -lstdcxx -Y P,/opt/foss/lib:/usr/lib -i 
-L/opt/foss/lib -L/usr/lib -R/opt/foss/lib:/usr/lib -Bdynamic -lc -lm -lCrun 
-lstdcxx -xtarget=pentium4 -m32 -xarch=sse2 -xchip=pentium4 
-xcache=8/64/4:256/128/8 -xipo=0 -xO3 -no-undefined -version-info 0:0 
-L/opt/foss/lib -L/usr/lib -R/opt/foss/lib:/usr/lib -z combreloc -z redlocsym 
-z nodefaultlib -z ignore -z now -z rescan -z absexec -xldscope=symbolic 
-xlibmil -xipo=0 -xO3 -g -xtarget=pentium4 -m32 -xarch=sse2 -xchip=pentium4 
-xcache=8/64/4:256/128/8 -lc -lm -ldl -lpthread -lposix4 -lrt -mt -o 
libtag_c.la -rpath /opt/foss/lib tag_c.lo ../../taglib/libtag.la 
-inst-prefix-dir /var/tmp/pkgbuild-mwright/FOSStaglib-1.5.0-build
libtool: relink: /opt/SunStudio12/SUNWspro/bin/CC -G -zdefs -hlibtag_c.so.0 -o 
.libs/libtag_c.so.0.0.0   .libs/tag_c.o   -R/opt/foss/lib 
-R/opt/foss/lib:/usr/lib -L/opt/foss/lib -L/usr/lib 
-L/var/tmp/pkgbuild-mwright/FOSStaglib-1.5.0-build/opt/foss/lib -ltag -lz 
-library=no%Cstd -lCrun -lstdcxx -lc -lm -ldl -lpthread -lposix4 -lrt -lc   
-xtarget=pentium4 -m32 -xarch=sse2 -mt -xtarget=pentium4 -m32 -xarch=sse2 
-xtarget=pentium4 -m32 -xarch=sse2 -mt   -mt
Undefined                       first referenced
 symbol                             in file
TagLib::TrueAudio::File::File(const 
char*,bool,TagLib::AudioProperties::ReadStyle) .libs/tag_c.o
TagLib::Ogg::Speex::File::File(const 
char*,bool,TagLib::AudioProperties::ReadStyle) .libs/tag_c.o
TagLib::WavPack::File::File(const 
char*,bool,TagLib::AudioProperties::ReadStyle) .libs/tag_c.o
TagLib::Ogg::FLAC::File::File(const 
char*,bool,TagLib::AudioProperties::ReadStyle) .libs/tag_c.o
ld: fatal: Symbol referencing errors. No output written to 
.libs/libtag_c.so.0.0.0
goanna% 

And this is how I would like libtool to link it, is there some
option for libtool 2.2.4 to move the:

-L/var/tmp/pkgbuild-mwright/FOSStaglib-1.5.0-build/opt/foss/lib -ltag 

first, before the -L options, like the following link command that works:

goanna% /opt/SunStudio12/SUNWspro/bin/CC -D_REENTRANT -D__EXTENSIONS__ 
-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_POSIX_PTHREAD_SEMANTICS -DSOLARIS 
-DSOLARIS10 -DNDEBUG -DNO_DEBUG -D_UNICODE -DUNICODE -D_RWSTD_REENTRANT 
-D_XOPEN_SOURCE=500 -D_XPG5 -I/opt/foss/include/ansi -I/opt/foss/include 
-I/opt/foss/include/ansi -library=no%Cstd 
-features=anachronisms,except,rtti,export,extensions,nestedaccess,tmplife,tmplrefstatic
 -instances=global -template=geninlinefuncs -g0 -xdebugformat=stabs -xlang=c99 
-xustr=ascii_utf16_ushort -Qoption ccfe -features=gcc -Qoption ccfe 
-features=zla -Qoption ccfe ++boolflag:sunwcch=false -xF=%none -xbuiltin=%all 
-xinline=%auto -xprefetch=auto -xprefetch_auto_type=indirect_array_access 
-xprefetch_level=3 -xalias_level=compatible -KPIC -xipo=0 -xO3 
-xregs=no%frameptr -xjobs=2 -xrestrict=%all -xthreadvar=%all -z combreloc -z 
redlocsym -z nodefaultlib -z ignore -z now -z rescan -z absexec 
-xldscope=symbolic -xlibmil -xipo=0 -xO3 -g -xtarget=pentium4 -m32 -xarch=sse2 
-xchip=pentium4 -xcache=8/64/4:256/128/8 -lc -lm -ldl -lpthread -lposix4 -lrt 
-mt -L/var/tmp/pkgbuild-mwright/FOSStaglib-1.5.0-build/opt/foss/lib -ltag 
-L/opt/foss/lib -L/usr/lib -R/opt/foss/lib:/usr/lib -Y P,/opt/foss/lib:/usr/lib 
-i -L/opt/foss/lib -L/usr/lib -R/opt/foss/lib:/usr/lib -Bdynamic -lc -lm -lCrun 
-lstdcxx -Y P,/opt/foss/lib:/usr/lib -i -L/opt/foss/lib -L/usr/lib 
-R/opt/foss/lib:/usr/lib -Bdynamic -lc -lm -lCrun -lstdcxx -xtarget=pentium4 
-m32 -xarch=sse2 -xchip=pentium4 -xcache=8/64/4:256/128/8 -xipo=0 -xO3 -z defs 
-L/opt/foss/lib -L/usr/lib -R/opt/foss/lib:/usr/lib -z combreloc -z redlocsym 
-z nodefaultlib -z ignore -z now -z rescan -z absexec -xldscope=symbolic 
-xlibmil -xipo=0 -xO3 -g -xtarget=pentium4 -m32 -xarch=sse2 -xchip=pentium4 
-xcache=8/64/4:256/128/8 -lc -lm -ldl -lpthread -lposix4 -lrt -mt -G -zdefs 
-hlibtag_c.so.0 -o .libs/libtag_c.so.0.0.0   .libs/tag_c.o   -R/opt/foss/lib 
-R/opt/foss/lib:/usr/lib -L/opt/foss/lib -L/usr/lib -lz -library=no%Cstd -lCrun 
-lstdcxx -lc -lm -ldl -lpthread -lposix4 -lrt -lc   -xtarget=pentium4 -m32 
-xarch=sse2 -mt -xtarget=pentium4 -m32 -xarch=sse2 -xtarget=pentium4 -m32 
-xarch=sse2 -mt   -mt
CC: Warning: "-g" overrides "-g0", debugging information will be produced and 
inlining will be disabled.
ld: warning: option -z[defs|nodefs] appears more than once, first setting taken
goanna% 

Some other changes I made in the above link line:

-no-undefined changed to -z defs
-version-info dropped
passed all the other options to CC.

The rpath is OK with my manual link line, as the libtag.so and
libtag_c.so shared libraries will be installed in /opt/foss/lib:

goanna% dump -Lv .libs/libtag_c.so.0.0.0 

.libs/libtag_c.so.0.0.0:

  **** DYNAMIC SECTION INFORMATION ****
.dynamic:
[INDEX] Tag         Value
[1]     NEEDED          libc.so.1
[2]     NEEDED          libtag.so.1
[3]     NEEDED          libCrun.so.1
[4]     NEEDED          libstdcxx.so.4
[5]     INIT            0x4f38
[6]     FINI            0x5008
[7]     SONAME          libtag_c.so.0
[8]     RUNPATH         
/opt/foss/lib:/usr/lib:/opt/SunStudio12/SUNWspro/lib/rw7:/opt/SunStudio12/SUNWspro/lib/sse2:/opt/SunStudio12/SUNWspro/lib:/opt/SUNWspro/lib/sse2:/opt/SUNWspro/lib:/usr/ccs/lib:/lib:/usr/lib
[9]     RPATH           
/opt/foss/lib:/usr/lib:/opt/SunStudio12/SUNWspro/lib/rw7:/opt/SunStudio12/SUNWspro/lib/sse2:/opt/SunStudio12/SUNWspro/lib:/opt/SUNWspro/lib/sse2:/opt/SUNWspro/lib:/usr/ccs/lib:/lib:/usr/lib
[10]    HASH            0xc4
[11]    STRTAB          0x10c8
[12]    STRSZ           0x1db7
[13]    SYMTAB          0x628
[14]    SYMENT          0x10
[15]    CHECKSUM        0x81e4
[16]    VERNEED         0x2e80
[17]    VERNEEDNUM      0x2
[18]    RELCOUNT        0x11
[19]    PLTSZ           0xf8
[20]    PLTREL          0x11
[21]    JMPREL          0x2fd0
[22]    REL             0x2ed0
[23]    RELSZ           0x1f8
[24]    RELENT          0x8
[25]    FEATURE_1       PARINIT
[26]    SUNW_CAP        0xb4
[27]    FLAGS           BIND_NOW
[28]    FLAGS_1         [ NOW NODEFLIB ]
[29]    PLTGOT          0x1518c
goanna% 

Thanks very much, Mark

-- 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]