2014-10-21 5 views
0

У меня есть проект GCC для ARM Cortex-M3. Сценарий компоновщика определяет, где должен располагаться каждый раздел источника. Поэтому у меня есть разделы, как этотПереместить конкретные объектные файлы библиотеки

.text : 
{ 
    *(.text) 
} > FLASH 
_sidata = .; 
.data : AT (_sidata) 
{ 
    _sdata = .; 
    *(.data) 
    _edata = .; 
} 

Проект потребляет библиотеку lib.a, содержащую объектный файл object.o и other.o. Теперь я хочу, чтобы раздел .text object.o размещался между _sdata и _edata. Объектив заключается в том, что этот раздел будет скопирован кодом запуска из FLASH в RAM, и он будет выполнен там. other.o не следует размещать в этом разделе, поскольку он слишком велик.

Я пробовал как in this SO question

.data : AT (_sidata) 
{ 
    _sdata = .; 
    *(.data) 
    object.o(.text) 
    _edata = .; 
} 

Но это не удается, так как object.o берется из библиотеки и не является прямой доступны.

ответ

0

Я нашел это самостоятельно. Библиотека должна быть указана.

.data : AT (_sidata) 
{ 
    _sdata = .; 
    *(.data) 
    lib.a:object.o(.text) 
    _edata = .; 
} 
Смежные вопросы