Re: [flac] /usr/bin/ld: bad -rpath option

From: Oliver Lietz <de-bsd-questions(at)oliverlietz.de>
Date: Tue, 27 Mar 2007 12:34:46 +0200

Am Dienstag, 27. März 2007 schrieb Oliver Fromme:
[...]
> > "-Wl,-read_only_relocs,warning" sieht für mich verdächtig aus,
>
> Nö, das ist normal (die Flags werden vom Compiler cc(1) an
> den Linker ld(1) weitergereicht).
>
> Zum Vergleich habe ich bei mir mal rasch audio/flac compi-
> liert (ging ohne Probleme), derselbe Abschnitt sieht dort
> so aus (FreeBSD/i386 6-stable vom 20. Februar):
>
> /bin/sh /usr/local/bin/libtool --mode=link cc -I../.. -I./include
> -I../../incl ude -DNDEBUG -Wall -W -DFLaC__INLINE=__inline__ -O2
> -fno-strict-aliasing -pipe - march=pentium4m -o libFLAC.la -rpath
> /usr/local/lib -version-info 7:0:0 -lm bitbuffer.lo bitmath.lo
> cpu.lo crc.lo file_decoder.lo file_encoder.lo fixed.lo float.lo
> format.lo lpc.lo md5.lo memory.lo metadata_iterators.lo metadata_obje
> ct.lo seekable_stream_decoder.lo seekable_stream_encoder.lo
> stream_decoder.lo s tream_encoder.lo stream_encoder_framing.lo
> ia32/libFLAC-asm.la
> cc -shared .libs/bitbuffer.o .libs/bitmath.o .libs/cpu.o
> .libs/crc.o .libs/file _decoder.o .libs/file_encoder.o
> .libs/fixed.o .libs/float.o .libs/format.o .libs /lpc.o
> .libs/md5.o .libs/memory.o .libs/metadata_iterators.o
> .libs/metadata_obje ct.o .libs/seekable_stream_decoder.o
> .libs/seekable_stream_encoder.o .libs/strea m_decoder.o
> .libs/stream_encoder.o .libs/stream_encoder_framing.o -Wl,--whole-ar
> chive ia32/.libs/libFLAC-asm.a -Wl,--no-whole-archive -lm
> -march=pentium4m -Wl ,-soname -Wl,libFLAC.so.7 -o .libs/libFLAC.so.7
>
> Ein Trick, der in solchen Fällen manchmal hilfreich ist,
> ist ein wortweiser Vergleich mit diff(1). Resultat:
>
> 5,7d4
> < -maltivec
> < -mabi=altivec
> < -DFLAC__NO_ASM
> 17a15
>
> > -march=pentium4m
>
> 25d22
> < "-Wl,-read_only_relocs,warning"
> 44a42
>
> > ia32/libFLAC-asm.la
>
> 65a64,66
>
> > -Wl,--whole-archive
> > ia32/.libs/libFLAC-asm.a
> > -Wl,--no-whole-archive
>
> 67,70c68
> < -maltivec
> < -mabi=altivec
> < -Wl,-read_only_relocs
> < -Wl,warning
> ---
>
> > -march=pentium4m
>
> Das sieht soweit eigentlich gut aus. Soweit ich das sehen
> kann, sind die Differenzen ausschließlich auf den Unter-
> schied powerpc vs. i386 zurückzuführen. Also eigentlich
> alles normal. Leider hilft das jetzt bei Deinem Problem
> nicht weiter.

Ich habe jetzt make config statt über portmaster manuell ausgeführt, dann aus
den drei Makefiles in libFLAC "-Wl,-read_only_relocs,warning" entfernt und
mit make install durchgebaut. Es hat also tatsächlich etwas mit
"-Wl,-read_only_relocs,warning" zu tun.

> Ist vielleicht Dein libtool zu alt? Bei mir ist's
> 1.5.22_3 (aktuell wäre _4, aber ich hatte bisher keinen
> grund für ein Update).

Ports sind aktuell, 1.5.22_4.

> Möglich, dass ld(1) unter powerpc
> bestimmte Optionen anders behandelt als unter i386, und
> libtool fehlt dort eine Anpassung. Das ist aber jetzt
> nur Spekulation.
>
> Mangels entsprechender Hardware kann ich leider nicht
> weiterhelfen. Vielleicht kann ja ein anderer powerpc-
> Besitzer mit den Infos etwas anfangen und da anknüpfen.

Wie wird die Option "-Wl,-read_only_relocs,warning" ermittelt? Welche
Auswirkungen hat die genau (mir sagt der Eintrag in der ld man-Page nichts)?

O.

To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Tue 27 Mar 2007 - 12:36:13 CEST

search this site