Имея здесь проект , то есть , использующий некоторые внешние библиотеки, встроенные в GNU-toolchain (предоставляемые извне, без исходного кода).Я компилирую приложение для встроенных систем (особенно FreeRTOS ), поэтому я использую newlib .
I изначально пробовал с помощью этого набора инструментов https://releases.linaro.org/components/toolchain/binaries/7.4-2019.02/aarch64-elf/, но не удалось из-за (среди прочего) этих ошибок компоновщика :
undefined reference to `__ctype_ptr__'
Кажется, этот символ должен быть определенпо libc .Зайдя в каталог newlib sysroot , в частности, в данном случае sysroot-newlib-linaro-2019.02-aarch64-elf \ usr \ lib , попытался найти __ctype_ptr__ в libc.a :
aarch64-elf-nm -C --defined-only -g libc.a | grep __ctype_ptr__
Нет выходных данных, поэтому этот libc действительно не определяет __ctype_ptr __ .
Продолжение с помощью загляните в библиотеку , которая нуждается в символе , блокнот ++ редактирование выявило это среди искаженного текста:
/opt/gcc-linaro-5.4.1-2017.05-x86_64_aarch64-elf/aarch64-elf/libc/usr/include/machine
Что означает это библиотека была построена с использованием 5.4.1 aarch64-elf toolchain версии и Я пытался использовать версию 7.4 , поскольку мне нужна более новая стандартная поддержка C ++ .
Также скачал версию 5.4.1 (только sysroot): https://releases.linaro.org/components/toolchain/binaries/5.4-2017.05/aarch64-elf/
Снова перейдем к 5.4.1 sysroot-newlib-linaroНа этот раз каталог -2017.05-aarch64-elf \ usr \ lib :
aarch64-elf-nm -C --defined-only -g libc.a | grep __ctype_ptr__
наконец-то откроет:
0000000000000000 D __ctype_ptr__
, что означает, что действительно 5.4.1newlib libc экспортирует этот символ.
Вопросы:
Почему это несовместимость между двумя версиями?К какой категории относятся такие изменения?Где я могу найти более подробную информацию об изменениях, подобных этим, и причинах их появления?
Я вынужден использовать старую версию , потому что эти библиотеки были созданы сЭто?Нет ли способа использовать более новую версию вместо этого? Как обычно обрабатываются эти ситуации ?