
Ändert sich bei Portage denn etwas in der Handhabung bei gcc-5 bzgl. der Compilerumschaltung?Klaus Meier wrote:Auf alle Fälle ist das mit gcc-config dann auch angenehmer zu handhaben als mit einer ewig langen package.env Liste
Er spielt mMn. auf clang an. Wenn du dein gesamtes System mit clang übersetzen willst, exportierst du einfach CC und CXX in der make.conf. genauso kompliziert wie gcc-config.mv wrote:Zur Performance habe ich keine Benchmarks gemacht, aber dass der Code mit clang-3.5 länger wird als mit gcc, kann ich eigentlich nicht bestätigen. Lediglich bei -flto stinkt er deutlich ab.
Aber kannst Du bitte mal erkälren, was Du damit meinst:Ändert sich bei Portage denn etwas in der Handhabung bei gcc-5 bzgl. der Compilerumschaltung?Klaus Meier wrote:Auf alle Fälle ist das mit gcc-config dann auch angenehmer zu handhaben als mit einer ewig langen package.env Liste


Wenn Du zwischen gcc-4 und gcc-5 beim einigen Paketen umschalten musst, musst Du das genauso in die package.env packaen.Klaus Meier wrote:Beim clang muss ich ja alles in die package.env packen



Nein? was ist denn damit?Klaus Meier wrote:Aus gegebenem Anlass (der Thread ist ja bekannt, Hangup beim bauen von...)


Im Schrumpfen von Binaries mit lto war gcc bislang deutlich erfolgreicher als clang: eix schrumpft um knapp 1/3, während es bei clang keinen merklichen Unterschied gibt. Das kann allerdings auch an anderen Effekten liegen. Beispielsweise sind in eix viele Strings in den .o-Files identisch. und vielleicht legt clang die grundsätzlich nicht zusammen.Klaus Meier wrote:Was mir sehr gut gefallen hat ist lto, das Linken dauert zwar länger, aber die Binaries werden deutlich kleiner.
Ja (zumindest mit früheren Versionen von clang getestet). Aber Du brauchst den Gold Linker und musst die Plugins aktivieren.Hat schon mal jemand lto mit dem aktuellen Clang ans laufen bekommen?
Theoretisch ist das möglich - ich hatte da mal eine Diskussion mit SteveL. Praktisch erscheint mir das aber ziemlich exotisch, und mir ist kein Fall bekannt: Wenn es sich übersetzen und linken lässt, geht es in der Praxis auch. Für Plugins kann das Laufzeit-Linken natürlich Schwierigkeiten machen; möglicherweise ist qt sehr Plugin-basiert.sind Pakete bekannt, die crashen, wenn man sie mit lto übersetzt?

Wirklich über sind Bibliotheken, die zwar mit LTO wunderbar zusammengezwirbelt werden, aber mit denen man dann nichts mehr bauen kann. Da hatte ich so vier oder fünf von.mv wrote:Theoretisch ist das möglich - ich hatte da mal eine Diskussion mit SteveL. Praktisch erscheint mir das aber ziemlich exotisch, und mir ist kein Fall bekannt: Wenn es sich übersetzen und linken lässt, geht es in der Praxis auch. Für Plugins kann das Laufzeit-Linken natürlich Schwierigkeiten machen; möglicherweise ist qt sehr Plugin-basiert.sind Pakete bekannt, die crashen, wenn man sie mit lto übersetzt?
Dann hast Du offensichtlich nicht das gold-Linker-Plugin aktiviert. Ohne das gehen .a-Files mit lto nicht - zumindest nicht mit >=gcc-4.9, wo fat-lto nicht mehr der Default ist.Yamakuzure wrote:über sind Bibliotheken, die zwar mit LTO wunderbar zusammengezwirbelt werden, aber mit denen man dann nichts mehr bauen kann. Da hatte ich so vier oder fünf von

Wenn es für .a-Files gehen soll: ja.Klaus Meier wrote:Sollte man bei lto also immer den Gold Linker verwenden? War mir beim gcc noch nicht bewußt.
Das reicht nicht. Du musst ein entsprechendes Plugin bauen und instllieren. Bislang hat man dazu patchen müssen - zumindest bei binutils-2.24.Ich habe jetzt mal -fuse-linker-plugin zu den CFLAGS hinzugefügt und den Linker auf Gold gesetzt.

Doch, war mit Gold plugin. Ohne war LTO recht ... nutzlos.mv wrote:Dann hast Du offensichtlich nicht das gold-Linker-Plugin aktiviert. Ohne das gehen .a-Files mit lto nicht - zumindest nicht mit >=gcc-4.9, wo fat-lto nicht mehr der Default ist.Yamakuzure wrote:über sind Bibliotheken, die zwar mit LTO wunderbar zusammengezwirbelt werden, aber mit denen man dann nichts mehr bauen kann. Da hatte ich so vier oder fünf von
Falls es doch geht (also wegen fat-lto), dann hast Du ohne Plugin die Vorteile von lto verloren.
Google erstellt seit einiger Zeit das stable release von google-chrome für Linux mit clang. Also kann es wohl soooo schlecht nicht sein.Yamakuzure wrote:-- Zu clang:
Ich bin von dem Teil garnicht überzeugt. Die Ergebnisse waren schon immer schlechter als mit gcc-4.8 oder nun 4.9. Das die Kompilierzeit kürzer sein soll ist ehrlich gesagt so eine idiotische Farce, das ich, wann immer dieses Argument kommt, nicht weiß, ob ich lachen oder weinen soll.
Wen zum Henker interessiert es, dass zum Beispiel LibreOffice 10 Minuten weniger zum Kompilieren braucht, das macht man ein Mal, wenn die Performance des Produkts, das nutzt man bestimmt öfters als ein Mal, schlechter ist? So ein Schwachsinn.

Hatte ich noch nie, und plasma-workspace habe ich schon öfters gebaut. Welche Versionen denn? War ccache aktiviert? das würde mich wirklich einmal interessieren, wie so etwas kommen kann, denn so ein Einfrieren ist natürlich extrem übelst!franzf wrote:kompletter Freeze des Systems - z.B. bei plasma-workspace hängt am Ende ein g++-Prozess mit knapp 3GB Speicherverbrauch rum

Nein, kein ccache. Hatte ich zeitweise laufen, aber bei den großen Brocken bringt es kaum was, da sich irgendein zentraler Header meist ändert (auch wenns nur ein VERSION ENCREASE ist) und so der cache für die Katz ist.Yamakuzure wrote:Hatte ich noch nie, und plasma-workspace habe ich schon öfters gebaut. Welche Versionen denn? War ccache aktiviert? das würde mich wirklich einmal interessieren, wie so etwas kommen kann, denn so ein Einfrieren ist natürlich extrem übelst!franzf wrote:kompletter Freeze des Systems - z.B. bei plasma-workspace hängt am Ende ein g++-Prozess mit knapp 3GB Speicherverbrauch rum
(Auch wenn ich wegen *einem* Problem einer Bestimmten Kombination aus Umständen nicht gleich das komplette System umbauen würde...)

Was ich bislang auf die Schnelle feststellen kontte: Der erzeugte Code ist kleiner als der vom gcc und teilweise auch schneller. Ist jetzt aber nicht so derr Unterschied. Die Kompilierzeiten waren dann aber auch teilweise im Bereich vom gcc. Guter Code braucht wohl seine Zeit. Und qtcore konnte ich ja mit dem clang 3.5 bauen, KDE startete aber nicht mehr. Mit 3.6 geht das jetzt.LLVM Clang 3.6 supports a number of the OpenMP pragmas, but combinations won't be implemented. Though the rest of the LLVM OpenMP support should be worked out
for the LLVM Clang 3.7 release later in the year.

