Cross Compile rechnet falsch

  • Hallo zusammen,


    ich habe ein Problem beim Cross Compiling.


    Sowohl unter Mac OS X als auch unter Linux bekomme ich es einfach nicht hin, dass die folgende Funktion das richtige Ergebnis liefert.


    Code
    float get_altitude(float pressure) {
    return 44330.0f * (1.0f - powf(pressure/1013.25f, 0.1903f));
    // return = 44330.0
    }



    Der Term[font="Monaco"] [/font]"powf(pressure/1013.25f, 0.1903f)" ist immer 0.


    Ich dachte zuerst es könnte an soft- oder hard-float liegen, aber wenn ich anstelle der variable pressure z.B. den Wert 992.7 einsetze kommt das richtige Ergebnis raus.


    Code
    float get_altitude(float pressure) {
    return 44330.0f * (1.0f - powf(992.7/1013.25f, 0.1903f));
    // return = 172.5
    }


    Kompiliere ich das Ganze direkt auf dem Raspberry funktioniert es.


    Vielleicht nur ein kleines Flag was mir noch beim Kompilieren fehlt?


    Gruß

  • War doch soft- und hard-float.


    Das heißt, sobald es um kleine Zahlen und "math.h" geht, gibt es Probleme mit:

    • arm-none-linux-gnueabi-
    • arm-linux-gnueabi-
    • arm-bcm2708-linux-gnueabi-


    Da diese alles mit soft-float kompilieren. Versucht man mit dem Parametern "-mfpu=vfp -mfloat-abi=hard" hard-float zu erzwingen, können sie es nicht linken.


    Mit "arm-bcm2708hardfp-linux-gnueabi-" funktioniert es ohne Probleme.


    Leider habe ich das bislang nur fertig, für Linux 32 Bit kompiliert, gefunden. Läuft also nicht auf meinem Mac.