Как использовать ilogb с newLib?

Я использую stm32, который использует GNU Arm Embedded Toolchain, который использует новую библиотеку.

Я добавил несколько скелетов из asn1c и столкнулся с проблемой компоновщика при использовании чисел с плавающей запятой. Ошибка компоновщика говорит:

undefined reference to `ilogb'

Мне кажется, что newLib не реализует ilogb (см. man ilogb)

Как мне использовать ilogb с newLib или есть ли альтернативная функция, которую я могу вызвать?


person eDeviser    schedule 18.06.2018    source источник
comment
похоже проблема в ASN.1, а не в GCC. Попробуйте прочитать отсюда: sourceforge.net/p/asn1c/discussion/357921 /поток/aa2f2ca4   -  person Alexey Esaulenko    schedule 18.06.2018
comment
Хм, ваша ссылка больше похожа на основную проблему при компиляции примера. Автор забыл определить `-DPDU=MyPDU`. У меня нет проблем с компиляцией с помощью обычного gcc на моем хост-компьютере. Проблема возникает при компиляции с упоминанием arm-toolchain, который использует newLib.   -  person eDeviser    schedule 19.06.2018
comment
Я ничего не знаю о ASN.1, но простой вызов ilogb(123.456) отлично работает в моем проекте (я использую последнюю версию gcc с arm.com и newlib-nano).   -  person Alexey Esaulenko    schedule 19.06.2018
comment
О, звучит интересно. простой вызов ilogb действительно не работает для меня. Не могли бы вы показать результат arm-none-eabi-gcc --version   -  person eDeviser    schedule 20.06.2018
comment
Я пытаюсь создать этот код yadi.sk/d/jFmO8ss-3YA3Gf с -mfloat- abi=softfp -mfpu=fpv4-sp-d16 и -mfloat-abi=soft. Все работает с C:\Program Files (x86)\GNU Tools ARM Embedded\7 2017-q4-major\bin›arm-none-eabi-g++.exe --version arm-none-eabi-g++.exe (GNU Tools для встроенных процессоров Arm 7-2017-q4-major) 7.2.1 20170904 (выпуск) [ARM/embedded-7-branch, редакция 255204]   -  person Alexey Esaulenko    schedule 20.06.2018


Ответы (1)


Возможно, альтернативой является реализация вашей собственной версии ilogb, как это делается в здесь.

person eDeviser    schedule 19.06.2018