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

[Debian]: Re: Selbst kompilieren



Thomas Keusch <thomas@visionaire.ping.de> wrote:

> 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.

> 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.

> 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.

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.

>       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...

> 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...?

> 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.

Tschoeeee

        Roland

-- 
  * Internet: roland@spinnaker.rhein.de * Fido: 2:2450/42 *
 PGP: 1024/DD08DD6D   2D E7 CC DE D5 8D 78 BE  3C A0 A4 F1 4B 09 CE AF
------------------------------------------------
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:     643


Reply to: