2

我尝试找到答案很长时间。对不起,我真的找不到。

我使用 gcc、ld、gcc(用于汇编程序编译)。

我写了 ld 脚本:

SECTIONS
{
  .text : *{.text}
}
LS_size = (SIZEOF(.text) + 2048 ) & ( 0xF800 ) >> 9 ;

我尝试使用汇编程序中的 LS_size:

_rom_size:
.byte LS_size

它工作正常,但在 C 代码上我无法将值设置为变量:

struct my_struct vari = {
  .codesize = LS_size,
}

如果我 extern LS_size,我得到:

error: initializer element is not constant

如何从 ld 脚本中生成的变量中为我的常量 C 变量设置默认值?

4

2 回答 2

1

用 C 写:

struct my_st { 
    long the_code_sz;
};

struct my_st vv = {
  .the_code_sz = ((long)(&LS_size))
};

然后你可以使用

vv.the_code_sz

LS_size 是一个符号,该符号的地址是您在链接描述文件中给它的值。

于 2017-05-08T16:34:35.327 回答
0

还要记住链接脚本变量不是数据类型。它们代表地址-并且存储在那里的内容是完全任意的

它基本上是你在 C 中使用 &VariableName 得到的。

于 2015-05-05T17:29:22.250 回答