Допустимо ли использовать более новую цепочку инструментов для сборки приложений?

В настоящее время мы создаем наше приложение с той же цепочкой инструментов, что и цепочка инструментов, используемая для создания корневой файловой системы.

Допустимо ли создавать приложение с более новой цепочкой инструментов или это приведет к каким-либо несоответствиям при работе в целевой файловой системе?

ИЗМЕНИТЬ:

Я хочу добавить проверку sanitize для приложения. К сожалению, версия 4.8 arm-linux-gnueabihf еще не поддерживает его. Итак, я хочу создать свое приложение с той же цепочкой инструментов linaro для той же архитектуры, только более обновленной (версия 6.4 вместо 4.8).


person ransh    schedule 01.02.2018    source источник
comment
Корневая файловая система будет состоять из динамических библиотек, поэтому, если вы компилируете свое приложение с использованием другой цепочки инструментов, может возникнуть вероятность несоответствия формата, и вы можете получить exec: format error при попытке выполнить двоичный файл.   -  person Gaurav Pathak    schedule 01.02.2018
comment
Спасибо, я отредактировал свой вопрос, я использую ту же архитектуру, просто обновляю gcc 4.8 до gcc 6.4.   -  person ransh    schedule 01.02.2018
comment
Это приложение C или C++?   -  person Frank Meerkötter    schedule 01.02.2018
comment
Это приложение C и C++   -  person ransh    schedule 01.02.2018


Ответы (1)


Чтобы это работало, вам требуется совместимость ABI между вашими старыми библиотеками и вашим перекомпилированным приложением. C ABI намного проще, чем C++ ABI. У вас не будет проблем с частями C.

Для частей C++ вам может потребоваться выбрать правильную версию ABI через g++ -fabi-version.

Для C ABI это вопрос совместимости ABI между используемыми версиями libc. glibc (который используется цепочкой инструментов Linaro) в целом безопасен.

person Frank Meerkötter    schedule 01.02.2018