Частичное связывание в IAR для ARM для сокрытия символов

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

У меня есть один из объектов, который по сути является API в библиотеке, и у него есть связанный заголовочный файл, который разработчик приложения включит в свой проект для использования библиотеки. Я хочу, чтобы символы в этом заголовочном файле были единственными открытыми для приложения, использующего библиотеку.

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

Проблема в том, что нестатические функции в моей библиотеке, которые должны вызываться только другими объектами в библиотеке, видны приложению, использующему библиотеку. Это проблема, если приложение пытается определить функцию с тем же именем, что и одна из функций моей библиотеки (случайно, случайно или намеренно). Я не могу сделать каждую функцию статичной (и, следовательно, видимой только для их модуля компиляции), потому что тогда эта функция будет непригодна для остальной части библиотеки.

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

У меня уже есть способ исправить это в Keil, который работает: в Keil я могу сделать частичное связывание, фактически связав мою библиотеку, используя флаги -ldpartial --privacy --no_locals --no_comment_section и предоставив файл управления через опцию - -edit = steering.txt

выборочно выбирать, какие символы я показываю и скрываю. Пример рулевого файла:

HIDE *
SHOW my_public_func1
SHOW my public_func2

Есть ли способ сделать это в IAR. Т.е. есть способ частично связать библиотеку, а затем связать эту библиотеку с приложением.

Что я пробовал: https://www.iar.com/support/tech-notes/linker/hiding-symbols-from-a-library-using-isymexport-with-a-steering-file/

Это хорошая идея, но она требует загрузки моей библиотеки отдельно на устройство, когда я хочу привязать ее прямо к приложению. В идеале, я бы хотел связать сгенерированный файл.out из вышеуказанной ссылки iar.com в приложение, а не загружать его отдельно.

0 ответов

Другие вопросы по тегам