1

我尝试在 .S 程序中使用 .c 文件中定义的变量。

在 .c 文件中:

const int var = 10;

在 .S 文件中:

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

它可以编译。但是在执行时,会出现错误消息“无法修改应用程序的文本部分;使用 GCC 选项 -fPIE 执行与位置无关的可执行文件。”

交叉编译工具是 arm-v7-linux-uclibceabi-gcc。目标是ARM cortex R4。

不能这样使用“.extern”吗?

谢谢,西米斯。

4

1 回答 1

0

您是否要写入该变量?也许在组装?它是只读数据,并且可能链接器脚本已将其放在文本部分中-因此您无法对其进行写入。

于 2014-09-04T13:36:26.417 回答