Hallo LUG,
ich habe mir mal die Shellscripte zum Bauen von Slackware-Paketen angesehen. Dabei sind mir folgende Zeilen aufgefallen:
( cd $PKG find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null )
Was wird hier genau gemacht? Ich habe zwar schon in den manpages nachgelesen, bin aber nicht daraus schlau geworden.
Hinweis: $PKG ist ein Pfad, wo nach dem kompilieren alle Dateien zum Programm stecken.
Ablaufbeispiel:
PKG=/tmp/kde-base
...
make install DESTDIR=$PKG
...
( cd $PKG find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null )
...
Vielen Dank,
Falk
Hi Falk,
On Mon, Jul 25, 2005 at 10:05:28 +0200, Falk D?ring wrote:
( cd $PKG find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null )
Was wird hier genau gemacht? Ich habe zwar schon in den manpages nachgelesen, bin aber nicht daraus schlau geworden.
Es werden zunaechst alle ELF-Binaries rausgesucht und mit "strip --strip-unneeded" bearbeitet (strip entfernt Debug-Symbole etc.).
Danach wird die gleiche Prozedur mit allen shared Libraries gemacht.
Das ist ein normales Vorgehen, bei Debian werden Binaries und Libs auch gestrippt, bevor sie in einem deb-Paket landen.
bye, Chris
Christian Perle schrieb am Montag, 25. Juli 2005 18:52:
Hi Falk,
On Mon, Jul 25, 2005 at 10:05:28 +0200, Falk D?ring wrote:
( cd $PKG find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null )
Was wird hier genau gemacht? Ich habe zwar schon in den manpages nachgelesen, bin aber nicht daraus schlau geworden.
Es werden zunaechst alle ELF-Binaries rausgesucht und mit "strip --strip-unneeded" bearbeitet (strip entfernt Debug-Symbole etc.).
Danach wird die gleiche Prozedur mit allen shared Libraries gemacht.
Warum werden Debug-Symbole im Programm untergebracht, wenn ich nicht angebe, dass diese drin sein sollen? Oder ist das strippen rein Vorsichtshalber? Oder sind die Symbole immer drin? Man, ich sollte mal in ein richtiges C-Buch schaun.
Das ist ein normales Vorgehen, bei Debian werden Binaries und Libs auch gestrippt, bevor sie in einem deb-Paket landen.
Nur die RPM-Bauer scheinen das nicht zu machen. Zumindest ist mir noch kein spec-File aufgefallen, wo sowas drin steht. Oder macht RPM das automatisch?
Tschau,
Falk
On Monday 25 July 2005 20:46, Falk Döring wrote:
Warum werden Debug-Symbole im Programm untergebracht, wenn ich nicht angebe, dass diese drin sein sollen? Oder ist das strippen rein Vorsichtshalber? Oder sind die Symbole immer drin? Man, ich sollte mal in ein richtiges C-Buch schaun.
Weil man davon ausgehen kann, dass 99% aller Compile-Vorgänge vom Programmierer zum Testen gemacht werden. Dabei ist es sehr praktisch, wenn die Symboltabelle drin steht, weil man dann leichter debuggen kann. Beim Release-Build kann man dann locker auch das strip dranhängen, falls man paranoid ist, sonst läßt man es so, weil man dann mit den core-dumps noch was anfangen kann (siehe KCrash).
Konrad
On Mon, Jul 25, 2005 at 08:46:05PM +0200, Falk Döring wrote:
Das ist ein normales Vorgehen, bei Debian werden Binaries und Libs auch gestrippt, bevor sie in einem deb-Paket landen.
Nur die RPM-Bauer scheinen das nicht zu machen. Zumindest ist mir noch kein spec-File aufgefallen, wo sowas drin steht. Oder macht RPM das automatisch?
Das kommt vermutlich auf die Konfiguration des RPM an. Bei SUSE werden z.B. alle Binaries / Bibliotheken gestrippt, die debug-Symbole werden in ein extra Paket (foobar-debuginfo-$version.rpm) gepackt (in Dateien unter /usr/lib/debug), so daß sie bei Bedarf nachinstalliert und die Programme debugt werden können.
lug-dd@mailman.schlittermann.de