我想爲特定C文件生成的.data
部分中的符號將它們放在最終可執行文件中的不同部分(例如.mydata
)中。例如,c - 將.data發送到不同的部分
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
部。
我在做什麼錯?