我试着找回答很长时间。对不起,我真的找不到它。
我使用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
如何从变量中为常量C变量设置默认值,这些变量是在ld脚本中生成的?
答案 0 :(得分: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是一个符号,该符号的地址是您在链接描述文件中给出的值。
答案 1 :(得分:0)
还要记住,linkerskript变量不是数据类型。它们代表地址 - 存储的内容完全是任意的
它的基本功能是你在C中使用& VariableName。