Vorteil: selber kompilieren?

Forlorn

Lt. Commander
Registriert
Nov. 2003
Beiträge
1.381
Welchen Vorteil hat ein selber kompilieren? Messbarer Geschwindigkeitszuwachs?
 
Kommt drauf an, was du kompilieren willst.

Manche Software gibts sogar nur als Sourcecode. Da musste selber ran um das Programm lauffähig zu bekommen. Der Vorteil liegt aber darin, dass du i.d.R einen eigenen Compiler verwenden und somit auf bevorzugte Optimierungen zurückgreifen kannst. So kannst du selbst entscheiden, ob beispielsweise SSE3 optimierter Code erzeugt werden soll. Hersteller von Programmen sind hingegen daran interessiert, das Programm so kompatibel wie möglich zu halten und werden beim Komplieren auf spezielle Prozessoroptimierungen eher verzichten.
Von daher kann sich eine selbst kompilierte Software durchaus in höherer Arbeitsgeschwindigkeit auszeichnen.


Beim Kernel sieht die Sache noch interessanter aus.
Hier kannst du dein ganzes System von Grund auf selbst modellieren. Kannst selbst entscheiden, ob du beispielsweise USB oder Bluetooth integriert haben willst, kannst entscheiden, welche Kernelmodule monolithisch und welche modular eingebunden werden und welche komplett aus dem Kernel verschwinden sollen.
Damit hast du großen Einfluss auf die Arbeitsgeschwindigkeit und den Speicherbedarf deines Systems. Wenn du beispielsweise einen kleinen Router aufsetzen willst, wirst du den Kernel sehr schlank und komplett monolithisch erstellen um eine maximale Arbeitsgeschindigkeit und moderaten Speicherverbrauch zu erreichen. Brauch ja nix nachgeladen werden, da du vorher schon ganz genau weisst, was du brauchst und was nicht.
Für einen Desktop-PC wirst du dich für einen sehr komplexen Kernel entscheiden, der in seinen elementaren Grundfunktionen monolithisch und im Rest modular ausgelegt ist, damit er allen möglichen Anforderungen gewachsen ist. Beim Desktop-PC weisst du ja nicht, welche Aufgaben in Zukunft auf ihn zu kommen werden.
 
Danke für die ausfühliche Antwort. :D
 
Ja super Antwort.
Damit stellt sich aber auch die SInnfrage nach Distributionen wie SuSE oder Mandrake, welche erstens das Thema Kernelkompilierung gar nicht vorsehen sondern wo es selbstverständlich ist den bei der Installation mitgelieferten Standardkernel zu behalten; und wo außerdem für Programminstallationen das rpm-System verwendet wird, wo ja nur Binaries installiert werden.
Einer der Gründe, warum ich auf Gentoo gewechselt habe...
 
Die Sinnfrage stellt sich keineswegs.

Linux soll ja auch weniger bewanderten Usern zugänglich gemacht werden und für den sanften Einstieg wäre es kontraproduktiv, den User erst mal seinen eigenen Kernel kompilieren zu lassen und jeden Quelltext durch nen Compiler zu jagen, bevor man irgend was installieren kann.

Btw.
Kernel-Kompilierung geht auch unter SuSE (Mandrake weiss ich gar nicht, sollte aber auch gehen). Hab ich in meinem alten SuSE 6.1-Handbuch einen riesigen Artikel drüber und beim Rumspielen auch schon so manches System kaputtkompiliert. :D:D
 
hm...hast auch wieder recht
ja kernelkompilierung geht auch unter Mandrake, hab ich selbst auch gemacht aber man muss sich da wirklich selber drum kümmern, also die ganzen Update-Tools sagen nie "Neue Kernel-Version verfügbar! Möchten Sie Infos zur Kompilierung?".
 
Der Geschwindigkeitszuwachs ist garnichtmal das entscheidenste. Wichtig ist auch, dass du verschiedene Einstellungen vornehmen kannst (neben der Prozessoroptimierung) die bei Binärpaketen festgelegt sind.
Dazu gehören z.B. die Pfadangaben, welche, gerade bei verschiedenen RPM Distributionen, unterschiedlich sein müssen / sollten. Ebenso lässt sich manchmal das Widget bestimmen (ob nun GTK1 oder 2, eventuell QT usw) oder bestimmte optionale Features aktivieren / deaktivieren.

Sprich: der Vorteil beim selber kompilieren liegt darin, dass die Software speziell für dein System und deine Wünsche ausgerichtet werden kann.

Nachteil: Die aus den Quellen gebauten Programme tauchen nicht im Paketmanager auf, weshalb sie von Hand verwalten werden müssen. Außerdem dauert das Kompilieren bei größeren Paketen eine kleine Ewigkeit.

mfg
 
wirklich schneller sind die kompilierten sachen eigentlich nicht, vielleicht mit gcc 3.4.x, nptl und prelink, aber für den normal user würden davon nur 2 sachen in frage kommen ;-)

pakete, die stark von cpu-befehlen wie sse, etc. profitieren, liegen meist schon in einer gut optimierten version vor, man kann sie natürlich auch selber backen

bezüglich suse und madrake kernel (wobei ich nru den suse kenne)...
da macht das wirklich sinn, wenn ich überlege wie langsam mein suse damals im vergleich zu meinem gentoo gebootet hat, oh gott, aber suse startet auch viel zu viele daemons und warum schreib ich eigentlich heute alles klein? ich weiss es nicht :freaky:
 
Hi

Beim Kompilieren reicht es leider nicht einfach ./configure, make und make install einzugeben.
Das wichtigste sind die CFLAGS, also die eigentlichen Compilereinstellungen. Wenn man das nicht weiß und berücksichtigt, wird man ganz sicher keinen richtigen Vorteil vom Kompilieren haben. Leider kommt es dann wieder ganz auf das Programm an welche Einstellungen optimal sind, da kann man nicht verallgemeinern. Und es gibt wirklich sehr viele Einstellungen, da kann man lange testen :)
Also Kompilieren ansich ist leicht, die richtigen Einstellungen finden kann dauern. Dann kann das Programm aber durchaus auf einmal doppelt so schnell laufen, also das darf man nicht unterschätzen.

mfg
aki
 
das selber kompilieren ist mit dem einfachen dreisatz eigentlich sinnlos. Wenn du allerdings gentoo nutzt ist das schon anders. Da werden mit den USE flags deine wünsche mit einbezogen, was du haben möchtest und was nicht, desweiteren eben auch die cflags mit den prozessoroptimierungen. erst alles zusammen macht einen unterschied - das aber auch nur programmabhängig. bei einigen programmen wirst du nichts merken, bei anderen gravierende änderungen.

Wenn du kde nutzt wirste unter gentoo in den USE-flags "-gnome" angeben, dh gnome aussen vor lassen. Desweiteren werden noch die prozessoroptimierungen einbezogen. Das resultat ist dass keine gnomepakete geladen werden(dein system wird nicht zugemüllt) und der firefox nur 1/3 der startzeit braucht. Auf gentoo.org gabs auch irgendwo messungen dazu.

hier mal der unterschied der abhängigkeiten:


bash-2.05b$ emerge -p mozilla-firefox

These are the packages that I would merge, in order:

Calculating dependencies ...done!
[ebuild N ] www-client/mozilla-launcher-1.32
[ebuild N ] dev-util/indent-2.2.9-r2
[ebuild N ] gnome-base/orbit-2.12.1
[ebuild N ] gnome-base/gnome-mime-data-2.4.2
[ebuild N ] gnome-base/gconf-2.8.1-r1
[ebuild N ] gnome-base/libbonobo-2.8.1
[ebuild N ] gnome-base/gnome-vfs-2.8.4-r1
[ebuild N ] www-client/mozilla-firefox-1.0.4
bash-2.05b$ emerge -p mozilla-firefox

These are the packages that I would merge, in order:

Calculating dependencies ...done!
[ebuild N ] www-client/mozilla-launcher-1.32
[ebuild N ] www-client/mozilla-firefox-1.0.4
bash-2.05b$
 
Zuletzt bearbeitet:
Ich habe FedoraCore seit nem Jahr laufen, erst 2 dann 3. Ich bin zufrieden, aber lese immer mehr über Ubuntu. Welche Vorzüge hat debian?
 
also selber kompilieren ist, sieht man mal vom kernel ab, nur was für leute die ihren rechner eigentlich nicht benutzen wollen, sonder nur compilieren wollen.
es bringt geschwindigkeitsvorteile, aber man nimmt dafür in kauf, dass der rechner mal kurz tagelang nichts anderes tut, als zu compilieren. (wenn man mal wieder openoffice, kde o.Ä. baut.)
wenn man echten geschwindigkeitsvorteil will, sollte man mal gucken, was man wirklich von dem system nutzt und den rest rausschmeißen.
meine erfahrung mit selbstcompilieren ist: slackware ist quasi genauso schnell und es lohnt sich nur bei sehr, sehr wenigen packeten, da die meisten viel skripting enthalten, das vom selbercompilieren nur ganz wenig profitiert.
 
forlorn:
debian hat gegenüber fedora core eigentlich keine nennenswerten vorzüge. mit yum hat fc jetzt endlich ein installationsprogramm dass wie portage und apt die anghängigkeiten auflöst und vom server läd.

ghorst:
naja, tagelang ist auf einem heutigen rechner übertrieben. Auf meinem 1,73 Ghz notebook brauche ich nicht mal einen tag um das komplette system inklusive kde zu bauen. und sowas lässt man dann einfach über nacht bauen. nur glaub mir: auf einem notebook merkt man die unterschiede noch deutlicher, auch wenn slackware(was in der firma noch auf dem pc läuft) recht schnell ist. nur hat gentoo eben noch weitere vorteile welche zumeist aus dem selber kompilieren resultieren(keine statischen abhängigkeiten wie bei binaries).

wer allerdings darauf verzichten kann kann sich auch archlinux angucken, das ist auf i686 optimiert und relativ flott und bietet ebenfalls mit pacman einen paketmanager mit abhängigkeitenauflösung
 
also ich habe vor ungefähr ne jahr mit dem selber kompilieren aufgehört, da dinge wie oo einfach so ein tag gebraucht haben (1.7Ghz 1GB ram). desweiteren sind gerade beim selbstkopilieren auf dauer die abhängigkeiten so hin waren, dass ich das system neu aufsetzen musste. (ich erinnere mich an sowas wie autoconf. 4 varianten installiert, damit man auch ja alle projekte erstellen kann.) mit gentoo ist man stark von dem abhängig, was gentoo so ins netz stellt. wenn die ein projekt nicht als würdig erachten, kommt es nicht in die distro. wenn man ein paar projekte hat, die man dringend nutzen will, zerstört man sich auf dauer das ganze system. (aber wenn man schon gentoo nutz, stellt man sich ja eh darauf ein alle paar woche das system neu aufzusetzen :p. das ist nichts für mich, ich will mein system nutzen und nicht jeden tag neu aufsetzen)
was den geschwindigkeitsvorteil angeht, konnte ich nie so feststellen. nun hab ich leider kein system dem ganzen tag untervolllast läuft, sondern ein system, dass eigentlich die meiste zeit schläft und nur ab und an mal ne höchst last hat, vielleicht spüre ich daher keinen vorteil durch selberbauen. aber wer hat schon ein desktopsystem das immer die volle leistung braucht.
wie gesagt, mein slackware ist heute so schnell wie mein selbstgebasteltes früher. (das war optimiert auf den prozessor, soweit möglich mit dem icc gebaut bzw. mit dem gcc, wo es nicht ging, siehe kde und damit die hälfte der c++-software.)
also mein fazit, vergebene liebesmüh. außer beim kernel, aber das ist eine ganz andere sache.
 
naja, gentoo hat mehr pakete drin als die anderen und auch kleinere programme oder geekiges ist eher im portage als sonst wo zufinden. ich hab schon so ziemlich jede distri ausprobiert und nirgends waren nur annähernd so viele pakete zu finden. desweiteren lebt gentoo bei mir und anderen wesentlich länger als andere distris. der krasseste fall is ein freund der vor jahren mal die 1.2 installiert hat und seitdem nur mal ab und zu "emerge sync && emerge -u world" ausführt - das wars. der hat mittlerweile kaum noch ahnung von linux. und mein gentoo läuft auf dem notebook seit ich es habe (seit ein paar monaten). ich kenne nur einen der es schafft gentoo ständig zu zerhauen, aber der zerhaut andere ditris noch schneller(dauert ca 1,5h :evillol: ).
von daher ist der einzige nachteil den ich sehen kann die dauer des kompilierens bei langsamen rechnern.
(PS: ooo baue ich auch nicht selber, sondern wenn dann als binary - koffice gefällt mir persönlich besser und wird auch eher genutzt).

zitat: "Klickt man auf »Über Ubuntu«, so wird ein Firefox-Browser geöffnet. Das kann auf langsamen Rechnern oder solchen mit wenig RAM sehr lange dauern, so daß man sich zunächst wundert, daß nichts passiert, und sich später wundert, wenn unvermittelt der Browser auf dem Bildschirm erscheint." --sowas passiert dann bei den 386 binaries..
 
Zuletzt bearbeitet:
Also ich kann über das Portage-System und die Paketauswahl auch nichts negatives sagen. Neue Versionen sind sofort drin und überhaupt is die Auswahl sehr groß. Abgesehen davon kann man sich natürlich jederzeit auch von der jeweiligen Projekthomepage "manuell" den Quellcode besorgen und "unabhängig vom Portage-System" kompilieren und installieren.
 
was an portage stinkt ist unmerge (also deinstallieren), da werden die dependencies leider nicht aufgelöst

und was ich mir wünsche ist so eine Art Mini-Confi-Tool ala Debian, wo man nach dem emerge evtl. über "ebuild /pfad config" mal so nen ncurses basierenden config Gang bekommt
 
throx: dafür gibts doch --depclean. das entfernt alle packete die nicht im worldfile stehen und von keinem anderen packet gebraucht werden. also alle abhängigkeiten die automatisch mit installiert wurden aber nichtmehr gebraucht werden.
 
@karuso und dabei ist ooo eines der ganz wenigen programme, wo ich persönlich ein ersthaft merkbare beschleunigung feststellte. inzwischen nutz ich auch nur noch die binäre distro, aber die ist wirklich viel langsamer als die selbstgebaute. ich benuzte auch, so weite möglich, koffice und bei dem merke ich nun gar keinen unterschied zwischen selbstgebaut und die für i586 optimierten, die ich zur zeit verwende. (sowohl auf meinem 1.7 athlon als auch auf meinen 1.6 pentium m)
 
Zurück
Oben