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.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!