2014-09-04 4 views
1

Я пытаюсь использовать переменную, определенную в .c файле в программе .S.Директива сборки .extern use in uclibc-gcc

В .c файле:

const int var = 10; 

В то время как в .S файле:

.extern var 
LDR lr, _VAR 
_VAR: .word var 

Он может быть составлен. Но при выполнении появляется сообщение об ошибке msg «Невозможно изменить текстовую секцию приложения, используйте параметр GCC -fPIE для независимых по умолчанию исполняемых файлов».

Инструмент кросс-компиляции arm-v7-linux-uclibceabi-gcc. И целью является ARM cortex R4.

Нельзя использовать «.extern» как это?

Thanks, Simmis.

+0

Какой чип вы используете? Какой микропроцессор? MIPS? РУКА ? ПИК? Freescale? Атмель? –

+0

ARM cortex R4. ST чипсет. – Simmis

+0

Настоятельно рекомендуем включить эту деталь в текст сообщения; Кроме того, добавьте тег об этом. Прямо сейчас у вас есть теги «Assembly» и «Extern». Я также рекомендую вам добавить ARM и cortex –

ответ

0

Вы пытаетесь написать эту переменную? Возможно, в сборке? Это данные только для чтения, и, предположительно, сценарий компоновщика помещает его в текстовый раздел, поэтому вы не можете писать на него.

+0

№. Просто используя ldr для извлечения var. – Simmis