Nein, für Hardfp kompilierte Software funktioniert auf einem Softfp-System nicht, da die Aufrufkonventionen unterschiedlich sind. Bei den Soft-Float-Konventionen werden Floats durch ganzzahlige Register geleitet (obwohl der Kernel technisch gesehen nicht das eigentliche Problem ist - das Problem ist der Linker und alle Standardbibliotheken). Aus diesem Grund war das Raspbian-Projekt ein so großes Unterfangen, dass alles von Grund auf hart sein muss. Jetzt, da wir ein offizielles Raspbian-Image mit vollständiger Hardfp-Unterstützung haben, scheint es keinen Grund mehr zu geben, für Softfp-Systeme zu entwickeln. Ich würde vorschlagen, Ihre Toolchain zu ändern, um Hardfp zu generieren, indem Sie gcc-Optionen wie:
gcc -O2 -march = armv6 -mfpu = vfp -mfloat-abi = hart
da dies Code generieren sollte, der für die Verwendung mit dem neuen Raspbian-Image geeignet ist. Das March-Flag gibt die Prozessorfamilie an, und die Mfpu- und Mfloat-Flags geben an, dass Hard-Float-Anweisungen und Aufrufkonventionen verwendet werden können und sollten.
Als Alternative zum Flag -march können Sie stattdessen "-mcpu = arm1176jzf-s" verwenden, das den tatsächlich im Pi verwendeten Chip angibt.
gcc
, müssen Sie nochmarch
etc angeben ?