Как сгенерировать независимый от местоположения код с помощью инструментария GNU ARM?

Я использую набор инструментов ARM ELF для своего проекта. Я работаю над загрузчиком, который должен быть независимым от местоположения, так как он переместит его сам с флэш-памяти на RAM после сброса. Я изо всех сил пытался выяснить, как скомпилировать независимый от местоположения код, используя набор инструментов GNU ARM, но, похоже, не могу заставить его работать.

Я пытался использовать опции -fpic и -fpie для компилятора и -pie для компоновщика, но когда я использую эти опции, компилятор жалуется, что для разделов.got или.plt не определено ни одного раздела. Я не уверен, где эти разделы должны идти, то есть в BSS или TEXT. Подумав об этом, я думаю, что должен использовать только -fpie, но я не уверен.

Может кто-то с опытом с этим, пожалуйста, помогите мне. Я использую GNU ARM 4.1.1

1 ответ

Вы можете сгенерировать независимый от позиции код [PIC], предоставив -mapcs-reentrant возможность arm-linux-gnueabi-gcc а также -Wa,-K вариант для сборщика. лайк:

arm-linux-gnueabi-gcc <other option> -mapcs-reentrant -Wa, -K <other option> files..
Другие вопросы по тегам