Я пытаюсь решить проблему, подобную следующей:
Предположим, что у меня есть библиотека libxyz.a, созданная из:
/* main.c */
int main(void)
{
int a;
}
скомпилировано и заархивировано с помощью:
gcc -c main.c -o abc.o && ar cr libxyz.a abc.o
Как мне написать скрипт компоновщика, чтобы разместить abc.o именно там, где он должен быть?
Я пытался справиться с этим таким образом:
/* script.ld */
SEARCH_DIR(.)
INPUT(-lxyz)
SECTIONS
{
.text : { xyz:abc(.text) }
.data : { xyz:abc(.data) }
.bss : { xyz:abc(.bss) }
}
но после запуска:
ld -T script.ld
Я получил:
ld: cannot find xyz:abc
Я не смог найти ни одного примера извлечения архивов из файлов компоновщика на форумах. Единственное, что я нашел, это документацию компоновщика, которая содержит информацию только о конструкции archive:file
.