我目前正在爲我的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