Re: Baubefehl lokalisieren
David Haller <[email protected]>
| Newsgroups | gmane.linux.suse.programming |
|---|---|
| Message-ID | <[email protected]> |
Hello,
On Fri, 13 Feb 2009, Sascha 'saigkill' Manns wrote:
>ich möchte gerne einem Baubefehl den -soname Passus hinzufügen. Ich habe
>die Ausgabe ab %install gepostet. Mir geht es um den letzten
>(abgegrenzten) Teil. Wo finde ich den Baubefehl? configure, Makefile.in
>oder in einer foo.c Datei?
Ne URL zu tktray wäre hilfreich gewesen.
[..]
>gcc -pipe -shared -o libtktray1.1.so tktray.o -lXext -lX11 -L/usr/lib -
>ltclstub8.5 -L/usr/lib -ltkstub8.5
>: libtktray1.1.so
In dem Fall kommt's darauf an, wie "sauber" das sein soll und welchen
soname du willst. Auf die Schnelle finde ich die Variable SHLIB_LD
(aus dem Makefile) als am besten geeignet.
Die Anpassung geht:
a) direkt im configure, z.B. per
sed -i '/test "$have_dl" = yes/,/else/{
s/SHLIB_LD="${CC} -shared"/SHLIB_LD="${CC} -shared -Wl,-soname,\\$@"/;
}' configure
Könnte man gut im %prep im .spec unterbringen. Oder halt nen patch
generieren.
b) gleiche Stelle in tclconfig/tcl.m4 anpassen, dann muß aber
autoreconf laufen
Nach a)
$ ./configure
[..]
$ grep SHLIB_LD.*soname Makefile
SHLIB_LD = gcc -pipe -shared -Wl,-soname,$@
$ touch tktray.o
$ make
rm -f libtktray1.1.so
gcc -pipe -shared -Wl,-soname,libtktray1.1.so -o libtktray1.1.so
tktray.o -lXext -L/usr/X11R6/lib -lX11 -L/usr/local/lib -ltclstub8.4
-L/usr/local/lib -ltkstub8.4
[Fehler wg. dummy .o Datei, ich hab hier grad kein tk8.5]
Wg. dem soname könnte man ggfs. den sed-Befehl anpassen, z.B.
... -shared -Wl,-soname,lib%{name}.so.%{version}
(und die lib noch passend umbenennen und mit symlinks verarzten) oder
so Zeugs, wenn man das .spec auch mit tktray1.2 verwenden will ;)
Achso, das findet man durch fleißig Makefile lesen und sich dann die
"Generierung" zurückhangeln ;)
HTH,
-dnh
--
Ich kenne da auch einen zentralen Nameserver einer nicht wirklich kleinen
Firma, der auf einem Pentium 200 läuft. Auslastung typischerweise im Bereich
zwischen *gähn* und *iswas?*, reicht also. -- Alexander Schreiber