我目前正在为我的Ubuntu机器上的Raspberry Pi执行一些交叉编译测试。我目前的理解是Raspberry Pi支持硬件浮点,默认的Raspbian OS图像是用硬件浮点(armhf)构建的。正确?Raspberry Pi ARM浮动ABI兼容性
如果我使用“arm-linux-gnueabi”工具链构建我的应用程序(不指定任何ARM标志),那么我的应用程序将使用软浮点ABI。正确?
在这种情况下,我所有的依赖项也必须使用相同的ABI才能正确链接。正确?
如果我的应用程序使用软浮点ABI,那么我的应用程序肯定会连接到软浮点ABI共享标准库。当我在我的Raspberry Pi上运行我的应用程序时,一切都按预期工作。这怎么可能,如果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
你在程序中使用浮点吗? – syam
可能是你的应用程序根本不使用浮点数? – auselen
我试图“打破它”。见上面的编辑。 – pqvst