это моя проблема: я создал скрипт компоновщика, который делит мой код на разные регионы.Это скрипт компоновщика:
OUTPUT_ARCH(arm)
SECTIONS {
. = 0x400000;
.stack1 : {
__stack_start1 = . ;
}
. = 0x800000;
.stack2 : {
__stack_start2 = . ;
}
. = 0x19900000;
.vectors1 : {
*(.resetvector1)
}
. = 0x19900018;
.irq_vector : {
*(.irqvector)
}
. = 0x19908000;
.init : { /* Init code and data */
*(.text1.init)
*(.text2.init)
}
/DISCARD/ : { /* Exit code and data */
*(.text.exit)
*(.data.exit)
*(.exitcall.exit)
}
.text : { /* Real text segment */
_text = .; /* Text and read-only data*/
*(.text)
_etext = .; /* End of text section */
}
. = ALIGN(8192);
.data : {
/*
* first, the init task union, aligned
* to an 8192 byte boundary.
*/
*(.init.task)
/*
* then the cacheline aligned data
*/
. = ALIGN(32);
*(.data.cacheline_aligned)
/*
* and the usual data section
*/
*(.data)
CONSTRUCTORS
_edata = .;
}
.bss : {
__bss_start = .; /* BSS */
*(.bss)
*(COMMON)
_end = . ;
}
. = ALIGN(8192);
_end_kernel = . ;
.vectors2 : {
*(.resetvector2)
}
}
работает нормально, но выходной файл занимает около 450 МБ, когда вся программа занимает всего несколько КБ!ЗАЧЕМ??Я думаю, что ld заполняет (с 0x0) пустые области между моим стеком, данными, областями текста и т. Д.Как избежать этой проблемы?
Заранее спасибо.