Как сгенерировать файлы .a и .so для добавления в проект arduino

Я знаю, как создать библиотеку на arduino ide с исходными кодами, но я не могу отправить свой исходный код другим пользователям, которые хотят использовать мою библиотеку.

Поэтому мне нужно создать библиотеку с precompiled=true информацией в library.properties. И мне нужно поместить мои файлы .a и .so в src/{build.mcu} (в моем случае src/avr/mylib.a и mylib.so).

Но где же эти файлы (.a и .so)?!

Генерирует ли компилятор arduino эти файлы? Если да, то где? Если нет, то какой компилятор мне нужно использовать?

Я нашел файл .o в appData\local\Temp\arduino_build_XXXX\libraries\mylib\

Большое спасибо и извините за мой английский.

, 👍-1


3 ответа


0
  • Примечание. Я никогда не делал этого с Arduino IDE, поэтому не знаю, будет ли вам полезен полученный файл.

Файл .a (вам не нужен файл .so — это общая библиотека, которая не имеет смысла на платформе без ОС) — это просто архив (в частности, архив ar), который содержит один или несколько файлов .o.

Создать его достаточно просто, используя:

avr-ar rcs myLib.a myLib.o

Вы найдете программу avr-ar в программе установки инструментов в вашей Arduino IDE.


Кроме того, UECIDE (который я написал) использует подобные библиотечные файлы для кэширования своих библиотек и другого скомпилированного кода. Вы можете использовать UECIDE, чтобы напрямую получить файл .a для вашей библиотеки, который вы найдете в папке cache папки данных UECIDE (найдите его через меню «Справка» -> «Отладка»).

,

0

Спасибо, Маженко!

Но для меня программа не avr-ar, я использую avr-gcc-ar.

После этого я должен поставить точку_a_linkage=true в своей библиотеке.свойства и вручную добавить mylib.a в AppData\Local\Temp\arduino_build_115676\libraries\mylib\

Не знаю почему, но это мне помогло.

Я надеюсь помочь другим.

С уважением.

,

1

[библиотека] = имя библиотеки

1) отредактируйте файл [library] library.properties и добавьте точку_a_linkage=true в конец ... (/home/name/Arduino/libraries/[library]/library.properties)

2) построить пример...

3) После завершения сборки перейдите в папку сборки (в Linux она находится в папке /tmp/arduino_build_xxxxxx), затем скопируйте файл dot_a из папки библиотеки (libraries/[library].a) в библиотеку arduino. папка для библиотеки [library] (/home/name/Arduino/libraries/[library]/src/esp8266/lib[library].a)

4) снова отредактируйте файл библиотеки [library] library.properties и удалите точку_a_linkage=true и добавьте precompiled=true и ldflags=-l[library] в конец файла...

5) создайте пример... на этот раз он ссылается на файл dot_a...

,