2014-10-21 28 views
5
ile

yapıyorum Cortex-M4F için bir proje oluşturmaya çalışıyorum. Çipin bir FPU var, bu yüzden -mfpu=fpv4-sp-d16 -mfloat-abi=hard ile yapıyorum ve alan kazanmak için herhangi bir kütüphane kullanmıyorum, bu yüzden -nostdlib -fno-builtin.'__aeabi_ddiv' ve arkadaşları için undefined başvuru - stdlib olmadan ancak -mfloat-abi = sert

Şimdi kayan nokta işlemleri kullanmak istiyorum, ama bunu yaparken bir bağlayıcı hatası alıyorum: Neden o

led1642gw_gain.c:(.text.led_calculateGain+0xc): undefined reference to `__aeabi_f2d' 
led1642gw_gain.c:(.text.led_calculateGain+0x24): undefined reference to `__aeabi_ddiv' 
led1642gw_gain.c:(.text.led_calculateGain+0x36): undefined reference to `__aeabi_dsub' 
led1642gw_gain.c:(.text.led_calculateGain+0x48): undefined reference to `__aeabi_ddiv' 
led1642gw_gain.c:(.text.led_calculateGain+0x54): undefined reference to `__aeabi_d2f' 
led1642gw_gain.c:(.text.led_calculateGain+0x9e): undefined reference to `__aeabi_f2d' 
led1642gw_gain.c:(.text.led_calculateGain+0xb6): undefined reference to `__aeabi_ddiv' 
led1642gw_gain.c:(.text.led_calculateGain+0xc8): undefined reference to `__aeabi_dsub' 
led1642gw_gain.c:(.text.led_calculateGain+0xda): undefined reference to `__aeabi_ddiv' 
led1642gw_gain.c:(.text.led_calculateGain+0xe6): undefined reference to `__aeabi_d2f' 
led1642gw_gain.c:(.text.led_calculateGain+0x10c): undefined reference to `__aeabi_f2d' 

mı? Doğru şekilde anlarsam, kütüphane işlevlerine güvenmek zorunda kalmamalı, bunun için ARM'ları yerel FPU yönergelerini kullanmalıdır.

cevap

4

Çekirdeğiniz, tek duyarlıklı kayan nokta talimatlarını destekler, ancak kodunuz çift duyarlıklı kayan nokta ile çalışır.

Tüm eksik __aeabi öğelerinin bir 'd' (belirtildiği gibi) olduğunu fark edebilirsiniz.

Kodunuzda kayan nokta değişmezleriniz varsa, C standardına göre bunlar çifte kabul edilir. Bunları, kelimenin tam anlamıyla bir f veya F ekleyerek tek duyarlıklı aralıkta zorlayabilirsiniz.

2.13.3 Floating literals: The type of a floating literal is double unless explicitly specified by a suffix. The suffixes f and F specify float...