Предположим, у вас есть цепочка инструментов кросс-компиляции, которая создает двоичные файлы для архитектуры ARM.
Ваша цепочка инструментов выглядит следующим образом (работает на компьютере X86_64 с Linux):
… и множество других инструментов для кросс-компиляции на ARM.
Вопросы, которые меня интересуют:
-mabi
и это могут быть «apcs-gnu», «atpcs», «aapcs», «aapcs-linux» и «iwmmxt».Ты можешь проверить Опции GCC ARM онлайн.
Недавно я начал небольшой проект по использованию стандартной библиотеки C Linux в среде с минимальным набором ресурсов. Я описывал это в своем блоге: http://ellcc.org/blog/?page_id=289
По сути, я настроил способ обработки системных вызовов Linux, чтобы путем реализации упрощенных версий определенных системных вызовов я мог использовать функции из стандартной библиотеки. Например, текущее состояние для ARM реализует упрощенные версии read (), readv (), write (), writev () и brk (). Это позволяет мне использовать printf (), fgets () и malloc () без изменений.
В моем случае я использую один и тот же компилятор для таргетинга на Linux и голый металл. Поскольку он основан на clang / LLVM, я также могу использовать тот же компилятор для работы с другими процессорами. Я сейчас работаю над голым металлическим примером для Mips.
Поэтому я думаю, что ответ заключается в том, что не должно быть никакой разницы.