CPU_FLAGS_*

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page CPU FLAGS * and the translation is 92% complete.
Nicht zu verwechseln mit CFLAGS.


CPU_FLAGS_* ist eine USE_EXPAND-Variable, die den Befehlssatz und andere CPU-spezifische Merkmale enthält. Zurzeit unterstützt Gentoo CPU_FLAGS_X86 (für amd64 und x86-Architekturen), CPU_FLAGS_ARM (für arm und arm64-Architekturen), und CPU_FLAGS_PPC (für ppc und ppc64-Architekturen).

Siehe auch
For more information see the CPU_FLAGS_* section in the Gentoo Handbook.

Unterschied zwischen CFLAGS und CPU_FLAGS_*

Eine häufige Frage ist: "Was ist der Unterschied zwischen CFLAGS und z.B. CPU_FLAGS_X86?"

CPU_FLAGS_* ist ein Beispiel für eine USE_EXPAND. Sie aktiviert bestimmte Optionen in Ebuilds, die an das Build-System weitergegeben werden. Zum Beispiel wird CPU_FLAGS_X86_SSE2, wenn es für eine Paket definiert ist, handgeschriebenes ASM aktivieren. Diese Optionen aktivieren spezifischen Code, der bereits im Paket vorhanden ist.

CFLAGS hingegen werden einfach verwendet, um dem Compiler mitzuteilen, dass er versuchen darf, Code mit solchen Anweisungen zu generieren, wenn er dazu in der Lage ist. Es bedeutet nicht, dass er dabei erfolgreich sein wird. z.B. bedeutet -msse2 in CFLAGS nicht, dass der Compiler schlau genug sein wird, SSE2 für eine bestimmte Funktion zu erzeugen. Diese Optionen erlauben es dem Compiler lediglich, bestimmten Code mit bestimmten Anweisungen zu erzeugen'.

Es ist daher wichtig CPU_FLAGS_* entsprechend zu konfigurieren, um die beste Leistung aus den Paketen herauszuholen.

Konfiguration

Diese Variablen müssen als CPU_FLAGS_X86 (CPU_FLAGS_ARM, CPU_FLAGS_PPC) Variable in /etc/portage/make.conf oder in /etc/portage/package.use gesetzt werden:

DATEI /etc/portage/make.confSetzen von CPU_FLAGS_x86
CPU_FLAGS_X86="mmx mmxext sse sse2 sse3"

Im Zweifelsfall konsultieren Sie die Flagbeschreibung mit einem der allgemein verfügbaren Werkzeuge, z.B. equery uses aus app-portage/gentoolkit:

user $equery uses media-video/ffmpeg

Die meisten Flag-Namen entsprechen den /proc/cpuinfo-Namen, mit der bemerkenswerten Ausnahme von sse3, das in /proc/cpuinfo pni heißt (bitte auch nicht mit ssse3 verwechseln).

Verwendung von cpuid2cpuflags

app-portage/cpuid2cpuflags hilft Benutzern, die richtigen CPU_FLAGS_ USE_EXPAND-Variablen für ihre CPU-Architektur zu bestimmen.

Emerge

root #emerge --ask app-portage/cpuid2cpuflags

Aufruf

user $cpuid2cpuflags
CPU_FLAGS_X86: mmx mmxext sse sse2 sse3

Beispiel für eine globale Anwendung:

root #echo "*/* $(cpuid2cpuflags)" > /etc/portage/package.use/00cpu-flags

Externe Ressourcen