Theres several seperate but related issues here.
kernel support, the kernel must support vfp so it can correctly save the registers.
compiler FPU use, does the compiler use the FPU
procedure call abi, how are parameters passed to procedures?
binary tagging, is the binary tagged with what ABI it uses and does the OS do anything with that information.
Issue the command:
readelf -A $(which dpkg)
On a hard-float (hf) system, you will see this as part of the output:
Tag_ABI_VFP_args: VFP registers
Oracle released the full Version (no longer preview) of Java 8 and Java 7 for the ARM architecture of the Raspberry Pi: link to Java 8.
You can also use from the command line:
sudo apt-get update
sudo apt-get install oracle-java8-jdk
Note that building soft float SW for Pi OS is not just a missed optimization opportunity, it's a mistake: system libraries are built with hard float ABI and expect float variables in FPU registers. You are apparently not using any such libraries, otherwise your SW would likely crash when you run it on a Pi.
I further examined the driver and I managed to build it without modifying anything outside the driver. In many realtek drivers(those for AC cards) there is a CONFIG_MP_VHT_HW_TX_MODE flag. When you disable it in rtlXXXXx.mk file(where XXXXx is model number without last letter, e.g. 8821c), the driver doesn't use floating point variables at all. From what I'...
This works for me on my Pi. I'm using a version of Mono that I compiled back in December before the patch for hard-float and Mono was released. Here's the output I get. I suspect that the issue has to do with the internationalization of the decimal point character.
Here is the output of mono --version:
Mono Runtime Engine version 3.2.7 (master/e42840f ...
After looking into the options of ct-ng menuconfig for a second time, I found out what had prevented the crosscompiler from building hard-float code: a missing FPU option! There are two options (one for the PF / SIMD unit) and one for hard-float vs. soft-float. Both must be activated manually:
The new compiler's name is: arm-unknown-linux-gnueabihf-g++
I found a solution to get this and possibly other drivers to build, but it porobably isn't the best one.
Kernel headers on Raspberry Pi and probably many different platforms prevent developers from using floating point variables in their modules by adding -msoft-float to gcc options. You can remove it from
Does this driver run even without the -mfloat-abi=hard?
I ask this because figuring out where the problem lies may involve looking for defaults.
First, does your system have the directory: /lib/arm-linux-gnueabihf ?
That directory has your library files in it compiled for hard float.
If the directory is missing, then you may not have a hard-float linux.
It is said in the FAQ section of Raspbian that the following tags are the only ones required when compiling.
I dunno what ancient FAQ that was; also compiler flags are one of those things that are easily used and abused by people that don't really understand what they are doing (the point of that link may not be immediately clear and it has nothing directly ...
In first case I'm only using software to perform float calculations.
No; since the executable is dynamically linked to the system library on a platform with hardware floating point support, there is no facility to perform such calculations with software.
At least, that's my guess. I think it will turn out differently if you compile a static binary.