Próbuję zbudować projekt dla Cortex-M4F. Chip ma jednostkę FPU, więc buduję z -mfpu=fpv4-sp-d16 -mfloat-abi=hard
i nie używam żadnych bibliotek w celu zaoszczędzenia miejsca, więc robię -nostdlib -fno-builtin
.niezdefiniowane odniesienie do `__aeabi_ddiv 'i przyjaciół - budowanie bez stdlib ale z -mfloat-abi = trudne
Teraz chcę użyć operacji zmiennoprzecinkowych, ale robiąc to pojawia się błąd linkera:
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'
dlaczego tak jest? Jeśli dobrze rozumiem, nie powinno się polegać na funkcjach bibliotecznych, ale używać do tego rodzimych instrukcji FPU ARM.