CPU_FLAGS_*
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).
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:
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
- News Item: neue CPU_FLAGS_PPC USE_EXPAND