Перейти к содержанию
    

Конвертирование библиотеки из IAR в Keil

Всех приветствую.

 

Есть сторонняя библиотека, собранная в IAR - ".a" файл. Её надо подключить к проекту в Keil с RealView. Библиотеки и в IAR, и в Keil - просто архивы с объектными файлами, но формат объектных файлов у компиляторов свой, и один к другому не подходит. Есть ли какой-либо вариант от конвертировать IAR'овский ".a"-файл в Keil'овский .lib?

 

Дело все происходит на Cortex-M4, STM32

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть ли какой-либо вариант от конвертировать IAR'овский ".a"-файл в Keil'овский .lib?

Наверняка есть. Ведь библиотеки в разных форматах всё равно должны содержать одну и ту же информацию, просто в разных представлениях. Но, боюсь, программу конвертации придётся делать самому.

Другой вариант - это прикрутить к библиотеке двоичный интерфейс (некий ABI в виде таблицы функций и т.п.), собрать и прицепить к проекту в виде двоичного куска. Должно быть сильно проще, чем изобретать программу конвертации.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Другой вариант - это прикрутить к библиотеке двоичный интерфейс (некий ABI в виде таблицы функций и т.п.), собрать и прицепить к проекту в виде двоичного куска. Должно быть сильно проще, чем изобретать программу конвертации.

 

Я вот тоже к этому склоняюсь.

 

То есть как-то так:

 

1) Создаем проект в IAR с этой библиотекой;

2) Адреса всех нужных функций складываем в таблицу;

3) Таблицу кладем по известному адресу (собственно, как и весь скомпилированный бинарник);

4) В проекте Keil вытаскиваем из этой таблицы адреса функций и используем их.

 

Вроде все должно получиться?

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вроде все должно получиться?

Да, должно.

Наверняка можно даже не класть таблицу адресов функций в прошивку. Можно как-то скормить эти адреса кейловскому линкеру, чтобы он сразу подставлял их в местах вызова функций.

Кстати, надо убедиться, что у яра и кейла одинаковые ABI (порядок записи аргументов функции в регистры, список сохраняемых и не сохраняемых регистров и т.п.).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кстати, надо убедиться, что у яра и кейла одинаковые ABI (порядок записи аргументов функции в регистры, список сохраняемых и не сохраняемых регистров и т.п.).

 

Вроде как:

 

http://supp.iar.com/FilesPublic/UPDINFO/00...r/ewarm.ENU.htm

The IAR C/C++ compiler, assembler, linker and debugger comply with ARM EABI 2.0 - the Embedded Application Binary Interface for ARM - based on ELF/DWARF 3.0. The advantage of AEABI compliance is that any such module can be linked with any other AEABI compliant module, even modules provided by other vendors. This will for example allow modules created by GNU, ARM RealView and IAR Embedded Workbench for ARM to be linked together.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...