связывание объектных файлов с неисполняемым образом с помощью набора инструментов IAR

Я использую инструментальную цепочку IAR для компиляции нескольких исходных файлов, а затем связываю сгенерированные файлы .o.

Однако я сталкиваюсь с ошибками при связывании, как показано ниже:

Ошибка [Li005]: нет определения для "main" [ссылка на cmain.o (rt7M_tl.a)]

Ошибка [Lc036]: ни один блок или место не соответствуют шаблону «раздел кода ro .intvec в vector_table_M.o (rt7M_tl.a)»

Насколько я понимаю, компоновщик ILINK пытается связать объектные файлы в виде исполняемого образа и в процессе добавления зависимостей из стандартных библиотек [т.е. ищет main () и таблицу векторов прерываний].

Что я ищу:

  1. Как настроить компоновщик, чтобы он не добавлял эти зависимости системной библиотеки, такие как main / start / interrupt-vector-table и т. Д.?
  2. Как настроить компоновщик для вывода неисполняемого изображения из группы объектных файлов - если это вообще возможно?

Вы можете представить себе этот неисполняемый образ в виде таблицы конфигурации, который будет помещен в постоянную память для чтения / записи основным образом приложения.


person dkumar    schedule 19.02.2016    source источник
comment
Можете ли вы скомпилировать его как библиотеку?   -  person user694733    schedule 22.02.2016
comment
Да, я могу получить объектные файлы с помощью компилятора IAR, и я не пробовал его, но я предполагаю, что могу заархивировать его и создать из него .a.   -  person dkumar    schedule 26.02.2016
comment
Вы сможете настроить его для вывода файла библиотеки напрямую. В параметрах проекта установите General Options -> Output -> Output file с Executable на Library. (Обратите внимание, что я сам никогда этим не пользовался.)   -  person user694733    schedule 26.02.2016
comment
Спасибо, попробую.   -  person dkumar    schedule 01.03.2016


Ответы (1)


Если вы сообщите компоновщику, что у вас нет точки входа с параметром командной строки '--no_entry', вы избавитесь от ссылки на данные main и .intvec.

Однако вам нужно указать компоновщику, что он должен сохранить.
--keep и / или __root могут помочь вам в этом.

person PNY    schedule 14.03.2016
comment
Интересно - изучая это, я узнал о --entry ‹custom_entry_point›, хотя я не знал об этом «--no_entry». Спасибо, цените это. - person dkumar; 18.03.2016