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

Re: [Debian]: Selbst kompilieren



On Mon, Nov 30, 1998 at 10:32:21AM +0000, Roland Rosenfeld wrote:

Hallo Roland

> > Ich moechte auf meinem Gateway, auf dem kein X11 installiert ist,
> > gelegentlich einige X11-Programme wie z.B. procmeter oder xosview
> > laufen lassen.
> 
> Mache ich genauso. Mit den aktuellen X-Paketen aus slink geht das auch 
> ganz gut, damit ist nämlich kein X-Server mehr required. Einzig
> rgb.txt ist in xserver-common, so daß es für eine Maschine ohne
> X-Server fehlt. Ein Bugreport ist aber bereits draußen.

Klingt gut.
Wobei... meinst Du, dass diese Pakete den X-Server als Dependency
eingetragen haben/hatten? Ist mir nie aufgefallen... hoechsten bei bo.

>> > Da die Programme in den Debian Packages dynamisch gelinkt sind,
> > hiesse das, dass ich auf dem Rechner auch diverse Lib-Packages
> > installieren muesste, was ich aber nicht moechte.
> 
> Was spricht dagegen? Auf meinem Server (ohne Monitor) sieht das so
> aus:
> 
> ii  xbase           3.3.2.3a-7     X Window System (XFree86) infrastructure
> ii  xbase-clients   3.3.2.3a-8     basic X clients
> ii  xlib6g          3.3.2.3a-7     shared libraries required by X clients
> 
> Läuft wunderbar.

Glaube ich, allerdings ist der Platz auf dem Gateway teilweise etwas knapp
kalkuliert, von daher moechte ich da im Moment sparen, wo es ohne Probleme
moeglich ist.

> > 1) Selbst kompilieren und statisch linken.
> 
> > 	Das hatte ich mal mit xosview versucht, hat aber nicht
> > 	hingehauen. Im Makefile hatte ich vorher die CFLAGS um
> > 	"-static" ergaenzt,
> 
> Das ist IMHO nicht der Weisheit letzter Schluß, da Du damit alle
> Libraries (also auch libc) statisch linkst (wie die ersten
> Netscape-Versionen seinerzeit), was natürlich mörderisch große
> Binaries zur Folge hat, die auch überhaupt keine Libraries sharen
> können.

Prinzipiell hast Du natuerlich recht, aber bei kleineren Tools wie xnetload
oder xosview faellt das IMHO nicht so schwer ins Gewicht. Bei Netscape oder
SO5 oder so saehe das natuerlich anders aus.

> Sinnvoller ist es da wohl, wenn Du die Libraries, die Du statisch
> einlinken willst, nur statisch zugreifbar machst, d.h. Du löschst
> einfach den Link /usr/X11R6/lib/libX11.so etc.
> Naja, das ist ziemlich unschön, daher ist es wohl sinnvoller, ein
> Verzeichnis /usr/X11R6/lib/static anzulegen und alle statischen
> Libraries (*.a) aus /usr/X11R6/lib einzeln dorthin zu linken.
> 
> Dann sagst Du dem Linker mit -L/usr/X11R6/lib/static, daß er diese
> Libs verwenden soll (-L/usr/X11R6/lib mußt Du dann natürlich löschen)
> und schon linkt er die gewünschten Files statisch.

Dieser Aufwand war hier gar nicht noetig, das Problem lag einfach nur darin,
dass die statischen Libs nicht installiert waren. Ich wusste nicht, dass es
zwischen den statischen und dynamischen Libs Unterschiede gibt - ich dachte,
das waeren dieselben Files, und sie wuerden nur auf unterschiedliche Weise
gelinkt.

> >       allerdings konnte er dann eine Lib nicht finden, waehrend eine
> >       dynamische Kompilierung ohne weiteres durchlief und auch
> >       funktionierte (auf dem Rechner, der kompiliert hat).
> 
> Solange Du nicht sagst, welche Lib er nicht finden konnte, kann man
> Dir da auch nicht weiterhelfen...

Stimmt natuerlich. Eigentlich wollte ich mir auch eher selbst helfen und nur
wissen, ob meine Vermutungen bzgl. der Vorgehensweise korrekt waren.
Was LD_LIBRARY_PATH angeht, waren sie es sogar auch, keine Ahnung, warum ich
das hier nicht zum Laufen bekommen habe. War wohl noch irgendwie gegen die
libc5 aus lib-compat (sp?) oder so gelinkt worden, was auf dem anderen
Rechner dann irgendwie Chaos (=coredump) ergab.


> > 2) Irgendwie mit LD_LIBRARY_PATH o.ae. rumspielen.
> 
> > 	Dazu habe ich keine genaueren Infos, quasi ueberhaupt gar
> > 	keine. Fehlende Libs z.B. nach ~/lib kopieren und den dann in
> > 	o.g. Variablen exportieren..? Nur *diesen* Pfad oder muessen
> > 	da noch andere rein, z.B. /lib?
> 
> Ich verstehe nicht ganz, was das bringen soll. Ich dachte, Dir geht es 
> darum, die Libraries gerade nicht zu installieren? Wenn Du sie jetzt
> aber nach ~/lib kopierst, dann installierst Du sie ja doch
> irgendwie...?

Ich wollte nicht gleich die ganzen Pakete installieren, da die Tools nur
selten gebraucht werden, sodass es einfacher ist, alle benoetigten Files in
~/bin und ~/lib zu haben, und diese Verzeichnisse ggf. zu packen und auf den
Desktop-Rechner auszulagern.

Da kann man ja nicht jedes mal dpkg -i bzw. --purge machen...

> > Fehlermeldungen habe ich im Moment keine parat, es geht mir nur um
> > die allgemeine Vorgehensweise. Ich habe schon etwas rumprobiert und
> > moechte halt wissen, ob ich mich mit meinen Vermutungen hier total
> > auf dem Holzweg befinde oder nicht.
> 
> Prinzipiell ist -static schon der richtige Weg, aber er hat halt den
> Nachteil, daß dann alles statisch ist. Teilweise statisch gelinkt wird 
> nur dann, wenn keine dynamische Library mit der Endung .so verfügbar
> ist. Da muß man also etwas tricksen. Alternativ kann man natürlich
> auch statt -L/usr/X11R6/lib -lX11 auch schreiben
> /usr/X11R6/lib/libX11.a, dann wird in jedem Falle genau diese
> statische Library eingebunden. Aber mit Eleganz hat das ja leider auch 
> wenig zu tuen.

Elegant ist das sicher nicht, stimmt, aber manchmal spielt Eleganz auch nur
die 2. Geige...


jedenfalls danke an dich und alle anderen fuer die zahlreichen tips!

-- 

 thomas.                                .powered.by.debian/linux.
                                    irc.:.#meeting.points, #frust.ger

------------------------------------------------
Um sich aus der Liste auszutragen schicken Sie
bitte eine E-Mail an majordomo@jfl.de die im Body
"unsubscribe debian-user-de <deine emailadresse>"
enthaelt.
Bei Problemen bitte eine Mail an: Jan.Otto@jfl.de
------------------------------------------------
Anzahl der eingetragenen Mitglieder:     629


Reply to: