aMule Forum

Deutsch => aMule Hilfe => Topic started by: Schuttwegraeumer on June 08, 2009, 08:51:40 PM

Title: wie der ./configure Zeile bestimmte Parameter hinzufügen
Post by: Schuttwegraeumer on June 08, 2009, 08:51:40 PM
Ich will mal auf Nummer sicher gehen.

Ich würde gerne gcc falgs wie mcpu oder mtune hinzufügen.
Und zwar in der ./configure Zeile.
Wie geht man am deppensichersten for?
Title: Re: wie der ./configure Zeile bestimmte Parameter hinzufügen
Post by: Stu Redman on June 08, 2009, 09:05:23 PM
Wenn man die CFLAGS vorher setzt sollten sie eigentlich vom configure übernommen werden.
Title: Re: wie der ./configure Zeile bestimmte Parameter hinzufügen
Post by: wuischke on June 08, 2009, 09:11:32 PM
Hinweis: Es gibt CLAGS und CXXFLAGS. Die ersten werden für den C Compiler und zweitere für den C++ Compiler benutzt.

Beispielaufruf:
Code: [Select]
CXXFLAGS="-Os --ffunction-section --fdata-section" ./configure --disable-debug
Title: Re: wie der ./configure Zeile bestimmte Parameter hinzufügen
Post by: Schuttwegraeumer on June 08, 2009, 09:43:17 PM
Hinweis: Es gibt CLAGS und CXXFLAGS. Die ersten werden für den C Compiler und zweitere für den C++ Compiler benutzt.

Beispielaufruf:
Code: [Select]
CXXFLAGS="-Os --ffunction-section --fdata-section" ./configure --disable-debug

Wo setze ich das?
Title: Re: wie der ./configure Zeile bestimmte Parameter hinzufügen
Post by: Stu Redman on June 08, 2009, 09:58:34 PM
Einfach im Terminalfenster so eintippen.
Title: Re: wie der ./configure Zeile bestimmte Parameter hinzufügen
Post by: Schuttwegraeumer on June 08, 2009, 10:28:55 PM
Einfach im Terminalfenster so eintippen.

Aha.
Danke, werde ich beim nächsten TAR gleich mal testen.
Wirklich verwenden werde ich es erst ab Donnrstag da ich dann an meinem Zweitwohnsitz bin mit dem Rechner meines Vaters.
Das ist im Gegensatz zu meinem eine echte Rakete (Athlon XP 1600+ :) und ich möchte da mal mit ein paar Optimierungen experimentieren.

Welche Compiler Flags haben sich dann entweder bei einem PII oder einem Athlon XP als sinnvoll erwiesen?
Ich weiss anhand eines Artikels auf planet64bit dass da die SSE Einheit eine andere Genauigkeit hat:

http://planet64bit.de/node/1458 (auf Seite 2 des ARtikels gibt es ein DIFF Bild zwischen i387 und SSE)

Kann man die FP Abarbeitung mittels mfpmath= ungefährlich auf SSE beschränken oder ist das zu ungenau für amule.
Der Athlon XP ist kein 64bitter und kann kein SSE2.
Title: Re: wie der ./configure Zeile bestimmte Parameter hinzufügen
Post by: Schuttwegraeumer on June 08, 2009, 11:07:32 PM
Einfach im Terminalfenster so eintippen.

1.) ist die Reihenfolge irgendwie relevant oder kann man das ./configure da einfach druntermischen?
2.) Die gesetzten Flags gelten aber schon nur für dieses eine Build?
Title: Re: wie der ./configure Zeile bestimmte Parameter hinzufügen
Post by: Stu Redman on June 08, 2009, 11:10:11 PM
aMule verwendet ziemlich wenig Floatingpoint. Ich glaube, diese Optimierungen kannst du getrost vergessen.
Title: Re: wie der ./configure Zeile bestimmte Parameter hinzufügen
Post by: Schuttwegraeumer on June 08, 2009, 11:22:39 PM
aMule verwendet ziemlich wenig Floatingpoint. Ich glaube, diese Optimierungen kannst du getrost vergessen.

Ok, das hatte ich eigentlich schon vermutet da amule oder das ganze ed2k System mehr eine datenbankähnliche Sache ist.
Und die Verschlüsselungen sind ja auch eigentlich reine integer Berechnungen?
MMX ist ja angeblich keine FP ERweiterung, würde die etwas verbessern?
Title: Re: wie der ./configure Zeile bestimmte Parameter hinzufügen
Post by: Stu Redman on June 09, 2009, 12:16:59 AM
Wohl kaum. Cryptopp enthält bereits Optimierungen dafür.
Title: Re: wie der ./configure Zeile bestimmte Parameter hinzufügen
Post by: Schuttwegraeumer on June 09, 2009, 06:40:39 AM
Ok.

Bleibt jtzt nur noch die Frage ob diese Settings dann dauerhaft sind oder nur für den einen make Lauf gelten.
Und in welcher Reihenfolge müssen die in die configure Zeile rein?
Title: Re: wie der ./configure Zeile bestimmte Parameter hinzufügen
Post by: Vollstrecker on June 09, 2009, 07:46:56 AM
Wenn du sie mit `CFLAGS=...  ./configure` arbeitest, gelten sie nur für den build. Wenn du erst ein `export CFLAGS=...` und dann `./configure` startest gelten sie für alle builds (auch andere als aMule) die du in dieser Konsole, und Kindern davon, startest. Wenn du es überall haben willst, dann schreibe die export-Zeile in deine ~/.bashrc, nach einem Login is es dann dauerhaft eingestellt, bei bereits bestehenden Sitzungen kannst du mit `source ~/.bashrc` die Einstellungen neu einlesen und dort auch verwenden.
Title: Re: wie der ./configure Zeile bestimmte Parameter hinzufügen
Post by: wuischke on June 09, 2009, 07:57:48 AM
oh-oh, das Gentoo-Syndrom...;)

OK, zuerst deine Frage: Die Werte vor dem configure-Befehl gelten nur für den ./configure-Befehl, dieser schreibt sie dann in Dateien, von denen sie im make benutzt werden.
Achtung: --enable-optimize fügt "-O2" zu den CXXFLAGS hinzu, so dass aus CXXFLAGS="-Os" CXXFLAGS="-Os -O2" wird -- und der Compiler nutzt die letzte angegebene Flag. Also kein --enable-optimize nutzen, wenn du eine andere Optimierungsstufe willst.

Nun allgemein zu Kompileroptimierungen: Ich will dir den Spass nicht verderben, aber es ist der Mühe selten wert. Kompilerbauer wissen was sie tun -- sie haben alle sinnvollen (d.h. geschwindigkeitssteigernd und nicht gefährlichen) Optionen genommen und hinter der Option "-O2" versteckt. Sie haben sich da viele Gedanken gemacht und wenn du das zu kompilierende Programm nicht besser kennst als sie, sind die Chancen gering, dass du bessere Flags findest. Prozessoroptimierung kann Vorteile bringen, da der Compiler nicht mehr nach dem kleinsten gemeinsamen Nenner - dem 386 - gehen muss und mehr Fähigkeiten der CPU nutzt.
aMule nutzt diese Flag mit --enable-optimize.

Es gibt auch noch "-O3", das ist eine Sammlung von Flags, die versprechen noch schneller zu sein. Leider kann das auf Kosten der Korrektheit gehen, unsicheren Code produzieren oder sogar langsamer als -O2 sein.
(Das hängt dann mit Caches zusammen. Früher (<94)¹ gab es die Taktik "loops unzurollen", d.h. anstatt dem Computer zu sagen "Mach 100mal das." hat man 100mal 'das' hingeschrieben. Der Code war dadurch viel größer, lief aber auf langsamen CPUs schneller. Heute ist es in der Regel schneller Code direkt aus dem Cache auszuführen, anstatt neuen Code nachzuladen, so dass das heute nicht mehr so gemacht wird.)

Meine persönliche Lieblingseinstellung habe ich dir oben gegeben. -Os ist fast wie -O2, allerdings werden nur Optimierungen durchgeführt, die den Code nicht größer machen. Das kann gut für Caches sein, sorgt aber allgemein für kleinere Programme. Die beiden anderen Flags in der Kombination mit LDFLAGS="--Wl,--gc-sections" helfen die Größe noch weiter zu reduzieren.
Title: Re: wie der ./configure Zeile bestimmte Parameter hinzufügen
Post by: GonoszTopi on June 09, 2009, 11:48:24 AM
Achtung: --enable-optimize fügt "-O2" zu den CXXFLAGS hinzu, so dass aus CXXFLAGS="-Os" CXXFLAGS="-Os -O2" wird -- und der Compiler nutzt die letzte angegebene Flag.
Nicht wahr. Längst arbeitet es so, aber jetzt Benutzeroptionen sind die Letzte.
Title: Re: wie der ./configure Zeile bestimmte Parameter hinzufügen
Post by: Schuttwegraeumer on June 09, 2009, 01:30:46 PM
Achtung: --enable-optimize fügt "-O2" zu den CXXFLAGS hinzu, so dass aus CXXFLAGS="-Os" CXXFLAGS="-Os -O2" wird -- und der Compiler nutzt die letzte angegebene Flag.
Nicht wahr. Längst arbeitet es so, aber jetzt Benutzeroptionen sind die Letzte.

Oh.
Du meinst die Settings bleiben bis ich was anderes setze?

You mean this settings will be in use until I set other flags?
Title: Re: wie der ./configure Zeile bestimmte Parameter hinzufügen
Post by: wuischke on June 09, 2009, 04:37:43 PM
Nein. Er meint meine Warnung stimmt so nicht mehr. Wenn du Einstellungen selbst setzt, ändert aMule diese nicht.

D.h. CXXFLAGS="-Os" ./configure --enable-optimize nutzt -Os, wie in den CXXFLAGS angegeben.
Title: Re: wie der ./configure Zeile bestimmte Parameter hinzufügen
Post by: GonoszTopi on June 09, 2009, 04:52:51 PM
Nein, ich meine daß --enable-optimize und CXXFLAGS="-Os" wird "-O2 -Os" bekommen, nicht "-Os -O2" wie du schriebt. Folglich, zum beispiel wenn du benutzt --enable-optimize mit CXXFLAGS="-O0", das wird Optimierung sperren.

---
Oops, ich habe deines Letztes Post nich gesehen, wuischke. Du hast recht.