我目前在我的Ubuntu机器上进行一些适用于树莓派的交叉编译测试。我现在的理解是,树莓派支持硬件浮点运算,并且默认的Raspbian操作系统映像是使用硬件浮点运算(armhf)构建的。正确吗?
如果我使用“arm-linux-gnueabi”工具链(不指定任何ARM标志)构建我的应用程序,则我的应用程序将使用软件浮点ABI。正确吗?
在这种情况下,为了能够正确链接,我所有的依赖项也必须使用相同的ABI。正确吗?
如果我的应用程序使用软件浮点ABI,则我的应用程序肯定已经链接到一个软件浮点ABI共享标准库。当我在我的树莓派上运行我的应用程序时,一切都按预期工作。如果Raspbian使用硬件浮点ABI(而我猜测共享标准库也是如此),那么这是怎么做到的呢?
FYI:我的默认arm-linux-gnueabi已配置为:
--with-float=soft
--with-arch=armv5
我正在这样编译我的应用程序:
arm-linux-gnueabi-g++ test.cpp -o test
我的程序确实包含浮点数计算:
double test = (123.456 + 789.123) * 1.23;
printf("%f\n", test); // prints: 1122.472170
printf("%f\n", std::floor(test)); // prints: 1122.000000