我想获取.data
为特定 C 文件生成的部分中的符号,并将它们放在.mydata
最终可执行文件的不同部分(例如)中。例如,
normaldata.c: char * my_str = "this should appear in .data";
specialdata.c: char * my_special_str = "this should appear in .mydata";
默认情况下,两者都my_str
出现my_special_str
在该.data
部分中。但是,当我生成 时specialdata.o
,我想将任何可能出现的内容发送.data
到.mydata
.
我知道我可以使用__attribute__((section(".mydata")))
来实现此效果,但我不知道如何将其应用于结构的指针成员的指定初始值设定项(我已经简化了此问题的代码)。所以相反,我在想也许我可以使用链接器脚本并将特定文件中的所有数据发送到我的特殊部分。
我试过这个链接器脚本(link.lds
):
SECTIONS
{
.mydata : { *(.data) }
}
,gcc -c specialdata.c -T link.lds -o specialdata.o
但输出objdump -x specialdata.o
显示一个.data
部分但没有.mydata
部分。
我究竟做错了什么?