Мой вопрос связан с поиском файлов библиотеки .a в сценариях компоновщика.Обычный скрипт компоновщика состоит из секций .text, .data, .rodata и .bss.
.text :
{
*(.text .text.*)
*(.rodata .rodata*) /* global const uint32_t i = 10 for example */
} > rom
.data :
{
*(.data .data.*)
} > ram AT > rom
.bss (NOLOAD) :
{
*(.bss .bss.*)
} > ram
Что я хотел бы знать, так это can .text, .data, .rodata и .bssразделы в библиотеке, такие как libc.a, должны быть размещены отдельно от остальных разделов?Размещение .text в другой области выполняется с помощью *\libc.a:*
, но как перемещаются .data, .rodata и .bss?
.text1 :
{
*\libc.a:* //.text from libc.a is placed into rom1 instead of rom
} > rom1
Я ожидал ответа для размещения .data, .rodata и.bss может иметь схожий синтаксис, но приведенный ниже синтаксис неправильный, поскольку разделы libc.a по-прежнему находятся в ram и rom вместо ram1 и rom1.
.text1 :
{
*\libc.a:*(.text .text.*) // libc.a.text still resides in rom
*\libc.a:*(.rodata .rodata.*) // libc.a.rodata still resides in rom
} > rom1
.data1 :
{
*\libc.a:*(.data .data.*) // libc.a.data still resides in ram
} > ram1 AT > rom1
.bss1 (NOLOAD) :
{
*\libc.a:*(.bss .bss.*) // libc.a.bss still resides in ram
} > ram1
Есть ли какие-либо подсказки для разделения .data, .rodata,и .bss из файла .a в свои разделы?