Частичное связывание в 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 в приложение, а не загружать его отдельно.