2015-01-20 3 views
8

Ich versuche Cross Compilation zu verstehen. Viele Cross-Compiler erwähnen gnueabihf. Ich konnte verstehen, wofür EABI steht, aber ich konnte nichts über das hf-Suffix finden. Was heißt das?eabihf Wofür steht hf?

Vielen Dank!

+2

Ich denke, es steht für 'Hard-Float'. – Jite

Antwort

4

hf bedeutet Hard Float.
Wenn Sie dieses Flag während der Kompilierung verwenden, kompiliert Ihr Compiler Ihr Programm so, dass es das Floating Point Unit verwendet, sobald es gestartet wird.
Ihr Programm wird schneller ausgeführt, aber nur wenn Sie Fließkommawerte verwenden!
Seien Sie vorsichtig, dieses Flag nicht zu verwenden, wenn Ihre CPU es nicht unterstützt, oder es wird nicht gestartet.

EDIT:
Auch wenn Sie Soft Float verwenden, wird es jeden floats "softwarely" berechnen.

+6

Nein, Hard-Float/Soft-Float ist eine reine ABI, ob Gleitkomma-Argumente in FPU-Registern oder Allzweckregistern übergeben werden. Soft-Float-Code kann perfekt eine FPU verwenden, wenn sie existiert (das notwendige Register-Shuffling tendiert dazu, einen moderaten Leistungs-Hit vs. Hard-Float zu ergeben), aber _ erlaubt auch, auf die Emulation zurückzufallen. Zum Beispiel verwendet Android den Soft-Float-ABI für nativen Code, aber viele davon hängen von der Hardware-FPU-Leistung (NEON) ab. – Notlikethat

+0

Großartig, danke für die Präzision! – VivienG