Erklärung zu jedem build flag

Locutus01

Active Member
Ich versuche mich gerade mal mit den build flags zu beschäftigen. Leider kenne ich mich mit den flags nicht so sehr aus als das ich jedes flag interpretieren kann. Wo kann ich zu jedem möglichen Flag, egal ob base system oder Anwendung eine Erklärung finden?

Das gleiche gilt für die Abhängigkeiten kombiniert mit den flags. Bei den Standard Dingen wie IPV6 usw ist da ja alles ziemlich simpel. Wenn es dann aber zu Versionen von gcc oder irgendwelchen GNUxxx Dingen kommt steht der durchschnittliche BSD Nutzer etwas auf dem Schlauch.

Mir fehlt z.B auch die src.conf. Muss ich die von Hand erstellen?
 
Fuer den Einstieg guck dir am besten mal das hier an:
https://wiki.bsdforen.de/howto/make.conf_optimieren

In /usr/share/examples solltest du auch irgendwo mk.conf src.conf ect. als Kommentierte example (Beispiel)-Dateien finden.

Viel Spass

Das kenne ich wohl wirft aber auch wieder neue Fragen auf, wie bsplw. wann benötige ich denn einen anderen Compiler als den default. Welche portoptionen benötige ich um die Programme schlanker und damit schneller zu machen. Der Plattenplatz und die benötigte Kompilierzeit nehme ich hier mal als vernachlässigbar hin.
Wo finde ich Angaben zu den portoptionen, die nicht gerade selst erklärend sind wie bsplw. imlib2, docpdf usw.
 
Du kannst einen Blick in die Makefiles des jeweiligen Ports werfen, dort stehen die möglichen Optionen drin, die du make mitgeben kannst. Dann gibt es noch bei einigen Ports "make config". Du bekommst dann ein Menu, wo du die entsprechenden Module, Erweiterungen...etc auswählen kannst. Wenn du den Port zum ersten mal baust, bzw keine config gespeichert wurde, kommt dieses Fenster immer automatisch. Wenn du nicht genau weißt, was die jeweilige Bibliothek/Option/Modul... macht, dann wirf ein Blick auf die Projektseite, oder gib zb dein imlib2 in freshports.org ein.
Alternativ kannst du auch "make search key=$suchbegriff" in /usr/ports benutzen, um den Portpfad herauszubekommen. Anschließend gehst du in das Verzeichnis und guckst in das pkg-descr File, wo eine kurze Beschreibung dazu steht.

Zu den "Optimierungen": Ich würde die Pfoten davon lassen, damit kannst du dir unter Umständen mehr zerschießen, als wie Performance rausholen, falls überhaupt. In der Regel sind die passenden Flags schon an den Port angepasst und liefern auch die bestmögliche Performance. Kein Compilerflag macht einen kaputten/langsamen Algorithmus, oder schlechte Programmierung wesentlich schneller. Deshalb ist es eigentlich schwachsinnig großartig von den Standardsabzuweichen, weil die in der Regel nicht ohne Grund so gesetzt sind.
Wenn du Programme optimieren willst, dann ist die Zeit meistens besser darin investiert den Code zu optimieren, oder den Algorithmus auszutauschen. Das nur mal als kleine Warnung.
Generell ist es aber nicht verkehrt sich seine Optionen mal anzugucken, aber um wirklich mit Compilerflags optimieren zu können muss du den Code kennen. Es gibt da einige pauschale Dinge die man machen kann, die aber auch wieder Probleme bringen können. Leider gibt es kein -make-it-damned-fast Flag. (*wartet jetzt auf den "Gentoo is for ricers" Link*) Du musst dich also näher damit beschäftigen, wenn du wirklich etwas rausholen willst.
 
Du kannst einen Blick in die Makefiles des jeweiligen Ports werfen, dort stehen die möglichen Optionen drin, die du make mitgeben kannst. Dann gibt es noch bei einigen Ports "make config". Du bekommst dann ein Menu, wo du die entsprechenden Module, Erweiterungen...etc auswählen kannst. Wenn du den Port zum ersten mal baust, bzw keine config gespeichert wurde, kommt dieses Fenster immer automatisch. Wenn du nicht genau weißt, was die jeweilige Bibliothek/Option/Modul... macht, dann wirf ein Blick auf die Projektseite, oder gib zb dein imlib2 in freshports.org ein.
Alternativ kannst du auch "make search key=$suchbegriff" in /usr/ports benutzen, um den Portpfad herauszubekommen. Anschließend gehst du in das Verzeichnis und guckst in das pkg-descr File, wo eine kurze Beschreibung dazu steht.

Zu den "Optimierungen": Ich würde die Pfoten davon lassen, damit kannst du dir unter Umständen mehr zerschießen, als wie Performance rausholen, falls überhaupt. In der Regel sind die passenden Flags schon an den Port angepasst und liefern auch die bestmögliche Performance. Kein Compilerflag macht einen kaputten/langsamen Algorithmus, oder schlechte Programmierung wesentlich schneller. Deshalb ist es eigentlich schwachsinnig großartig von den Standardsabzuweichen, weil die in der Regel nicht ohne Grund so gesetzt sind.
Wenn du Programme optimieren willst, dann ist die Zeit meistens besser darin investiert den Code zu optimieren, oder den Algorithmus auszutauschen. Das nur mal als kleine Warnung.
Generell ist es aber nicht verkehrt sich seine Optionen mal anzugucken, aber um wirklich mit Compilerflags optimieren zu können muss du den Code kennen. Es gibt da einige pauschale Dinge die man machen kann, die aber auch wieder Probleme bringen können. Leider gibt es kein -make-it-damned-fast Flag. (*wartet jetzt auf den "Gentoo is for ricers" Link*) Du musst dich also näher damit beschäftigen, wenn du wirklich etwas rausholen willst.
Hmmm, mit anderen Worten, wenn ich nicht gerade Programmierer bin, kann ich genauso gut Pakette installieren anstatt über die Ports zu gehen? Will ebenso heißen das es vollkommen egal ist ob ich ports mit oder ohne irgendwelche Abhängigkeiten installiere, da der einzigste Unterschied mehr Plattenplatz und Kompilierzeit ist?
 
Das würde ich jetzt nicht unbedingt sagen. Du hast halt bei den Ports den Vorteil, das du sie mit bestimmten Erweiterungen, Eigenschaften... dir quasi selbst zusammenstellen kannst. Bei den Paketen ist das so, das sie meistens nur in der Standardkonfiguration gebaut wurden. Aber einen signifikanten Geschwindigkeitsvorteil wirst du nicht haben, falls überhaupt. Die Pakete sind halt schon "optimiert" gebaut.
Für die Ports spricht auch, das es halt nicht für alle dinge Pakete gibt, da muss man dann zwangsläufig auf die Ports zurückgreifen.
 
Hmmm, mit anderen Worten, wenn ich nicht gerade Programmierer bin, kann ich genauso gut Pakette installieren anstatt über die Ports zu gehen?

Noe, die Ports sind in der Regel aktueller, zudem kann man die jeweilige Software vorm Bauen noch ggf. anpassen bzw, wird je nach Software sogar mit nem Textinterface nach den Optionen gefragt.

Will ebenso heißen das es vollkommen egal ist ob ich ports mit oder ohne irgendwelche Abhängigkeiten installiere, da der einzigste Unterschied mehr Plattenplatz und Kompilierzeit ist?

:rolleyes: wenn ein Paket Abhaengigkeiten hat, dann musst du die natuerlich erfuellen.



Ein Tip von mir waere erstmal das System so zu nutzen wie es ist und sich langsam anzufreunden. Wenn du nicht weisst wofuer du einen anderen Compiler nutzen solltest, dann lass es doch einfach erstmal.

Optimierungen sind immer so eine Sache, geht man zu uebereifrig dran macht man meist alles eher langsammer als schneller. ;)
 
Zurück
Oben